Compare commits
No commits in common. "83e59fb38566d68a76897beb420ad0c0e4557eb1" and "a3a04dffa0b4258dc35105645cbe915d3431e748" have entirely different histories.
83e59fb385
...
a3a04dffa0
161 changed files with 1317 additions and 3722 deletions
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Jekyll",
|
|
||||||
"image": "mcr.microsoft.com/devcontainers/jekyll:2-bullseye",
|
|
||||||
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
|
|
||||||
"postCreateCommand": "bash .devcontainer/post-create.sh",
|
|
||||||
"customizations": {
|
|
||||||
"vscode": {
|
|
||||||
"settings": {
|
|
||||||
"terminal.integrated.defaultProfile.linux": "zsh"
|
|
||||||
},
|
|
||||||
"extensions": [
|
|
||||||
// Liquid tags auto-complete
|
|
||||||
"killalau.vscode-liquid-snippets",
|
|
||||||
// Liquid syntax highlighting and formatting
|
|
||||||
"Shopify.theme-check-vscode",
|
|
||||||
// Shell
|
|
||||||
"timonwong.shellcheck",
|
|
||||||
"mkhl.shfmt",
|
|
||||||
// Common formatter
|
|
||||||
"EditorConfig.EditorConfig",
|
|
||||||
"esbenp.prettier-vscode",
|
|
||||||
"stylelint.vscode-stylelint",
|
|
||||||
"yzhang.markdown-all-in-one",
|
|
||||||
// Git
|
|
||||||
"mhutchie.git-graph"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ -f package.json ]; then
|
|
||||||
bash -i -c "nvm install --lts && nvm install-latest-npm"
|
|
||||||
npm i
|
|
||||||
npm run build
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install dependencies for shfmt extension
|
|
||||||
curl -sS https://webi.sh/shfmt | sh &>/dev/null
|
|
||||||
|
|
||||||
# Add OMZ plugins
|
|
||||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
|
|
||||||
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
|
|
||||||
sed -i -E "s/^(plugins=\()(git)(\))/\1\2 zsh-syntax-highlighting zsh-autosuggestions\3/" ~/.zshrc
|
|
||||||
|
|
||||||
# Avoid git log use less
|
|
||||||
echo -e "\nunset LESS" >>~/.zshrc
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,26 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is the topic?
|
|
||||||
options:
|
|
||||||
- Sharing tips and tricks
|
|
||||||
- Just chatting
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,26 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is the topic?
|
|
||||||
options:
|
|
||||||
- Sharing tips and tricks
|
|
||||||
- Just chatting
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,26 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is the topic?
|
|
||||||
options:
|
|
||||||
- Sharing tips and tricks
|
|
||||||
- Just chatting
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,26 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is the topic?
|
|
||||||
options:
|
|
||||||
- Sharing tips and tricks
|
|
||||||
- Just chatting
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,26 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is the topic?
|
|
||||||
options:
|
|
||||||
- Sharing tips and tricks
|
|
||||||
- Just chatting
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
|
@ -1,17 +0,0 @@
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Checklist
|
|
||||||
description: Following the guidelines can make you more likely to get responses.
|
|
||||||
options:
|
|
||||||
- label: >-
|
|
||||||
I have read and accepted the
|
|
||||||
[contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
7
.github/DISCUSSION_TEMPLATE/ideas.yml
vendored
7
.github/DISCUSSION_TEMPLATE/ideas.yml
vendored
|
@ -1,7 +0,0 @@
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please describe in detail what you want to share.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
25
.github/workflows/pr-filter.yml
vendored
25
.github/workflows/pr-filter.yml
vendored
|
@ -1,25 +0,0 @@
|
||||||
name: PR Filter
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types: [opened, reopened]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-template:
|
|
||||||
if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout Code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Check PR Content
|
|
||||||
id: intercept
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
script: |
|
|
||||||
const script = require('.github/workflows/scripts/pr-filter.js');
|
|
||||||
await script({ github, context, core });
|
|
23
.github/workflows/publish.yml
vendored
23
.github/workflows/publish.yml
vendored
|
@ -1,23 +0,0 @@
|
||||||
name: Publish
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- docs
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
GH_PAT:
|
|
||||||
required: true
|
|
||||||
BUILDER:
|
|
||||||
required: true
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
launch:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- run: |
|
|
||||||
curl -X POST -H "Accept: application/vnd.github+json" \
|
|
||||||
-H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
|
|
||||||
https://api.github.com/repos/${{ secrets.BUILDER }}/dispatches \
|
|
||||||
-d '{"event_type":"deploy", "client_payload":{"branch": "${{ github.ref_name }}"}}'
|
|
36
.github/workflows/scripts/pr-filter.js
vendored
36
.github/workflows/scripts/pr-filter.js
vendored
|
@ -1,36 +0,0 @@
|
||||||
function hasTypes(markdown) {
|
|
||||||
return /## Type of change/.test(markdown) && /-\s\[x\]/i.test(markdown);
|
|
||||||
}
|
|
||||||
|
|
||||||
function hasDescription(markdown) {
|
|
||||||
return (
|
|
||||||
/## Description/.test(markdown) &&
|
|
||||||
!/## Description\s*\n\s*(##|\s*$)/.test(markdown)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = async ({ github, context, core }) => {
|
|
||||||
const pr = context.payload.pull_request;
|
|
||||||
const body = pr.body === null ? '' : pr.body;
|
|
||||||
const markdown = body.replace(/<!--[\s\S]*?-->/g, '');
|
|
||||||
const action = context.payload.action;
|
|
||||||
|
|
||||||
const isValid =
|
|
||||||
markdown !== '' && hasTypes(markdown) && hasDescription(markdown);
|
|
||||||
|
|
||||||
if (!isValid) {
|
|
||||||
await github.rest.pulls.update({
|
|
||||||
...context.repo,
|
|
||||||
pull_number: pr.number,
|
|
||||||
state: 'closed'
|
|
||||||
});
|
|
||||||
|
|
||||||
await github.rest.issues.createComment({
|
|
||||||
...context.repo,
|
|
||||||
issue_number: pr.number,
|
|
||||||
body: `Oops, it seems you've ${action} an invalid pull request. No worries, we'll close it for you.`
|
|
||||||
});
|
|
||||||
|
|
||||||
core.setFailed('PR content does not meet template requirements.');
|
|
||||||
}
|
|
||||||
};
|
|
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -5,7 +5,6 @@ Gemfile.lock
|
||||||
|
|
||||||
# Jekyll cache
|
# Jekyll cache
|
||||||
.jekyll-cache
|
.jekyll-cache
|
||||||
.jekyll-metadata
|
|
||||||
_site
|
_site
|
||||||
|
|
||||||
# RubyGems
|
# RubyGems
|
||||||
|
@ -17,10 +16,5 @@ package-lock.json
|
||||||
|
|
||||||
# IDE configurations
|
# IDE configurations
|
||||||
.idea
|
.idea
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
_sass/dist
|
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
# Bundler cache
|
|
||||||
.bundle
|
|
||||||
vendor
|
|
||||||
Gemfile.lock
|
|
||||||
|
|
||||||
# Jekyll cache
|
|
||||||
.jekyll-cache
|
|
||||||
.jekyll-metadata
|
|
||||||
_site
|
|
||||||
|
|
||||||
# RubyGems
|
|
||||||
*.gem
|
|
||||||
|
|
||||||
# NPM dependencies
|
|
||||||
node_modules
|
|
||||||
package-lock.json
|
|
||||||
|
|
||||||
# IDE configurations
|
|
||||||
.idea
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
_sass/dist
|
|
||||||
assets/js/dist
|
|
||||||
>>>>>>> upstream_master
|
|
5
.husky/commit-msg
Normal file → Executable file
5
.husky/commit-msg
Normal file → Executable file
|
@ -1 +1,4 @@
|
||||||
npx --no -- commitlint --edit $1
|
#!/bin/sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
npx --no -- commitlint --edit ${1}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"commands-show-output": false,
|
|
||||||
"blanks-around-fences": false,
|
|
||||||
"line-length": false,
|
|
||||||
"no-inline-html": {
|
|
||||||
"allowed_elements": ["kbd", "sub"]
|
|
||||||
}
|
|
||||||
}
|
|
11
.vscode/extensions.json
vendored
11
.vscode/extensions.json
vendored
|
@ -1,3 +1,12 @@
|
||||||
{
|
{
|
||||||
"recommendations": ["ms-vscode-remote.remote-containers"]
|
"recommendations": [
|
||||||
|
// Liquid tags auto-complete
|
||||||
|
"killalau.vscode-liquid-snippets",
|
||||||
|
// Liquid syntax highlighting and formatting
|
||||||
|
"Shopify.theme-check-vscode",
|
||||||
|
// Common formatter
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"foxundermoon.shell-format",
|
||||||
|
"stylelint.vscode-stylelint"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
14
.vscode/settings.json
vendored
14
.vscode/settings.json
vendored
|
@ -2,29 +2,23 @@
|
||||||
// Prettier
|
// Prettier
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
|
"prettier.trailingComma": "none",
|
||||||
// Shopify Liquid
|
// Shopify Liquid
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"*.html": "liquid"
|
"*.html": "liquid"
|
||||||
},
|
},
|
||||||
"[markdown]": {
|
|
||||||
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
|
|
||||||
},
|
|
||||||
// Formatter
|
// Formatter
|
||||||
"[html][liquid]": {
|
"[html][liquid]": {
|
||||||
"editor.defaultFormatter": "Shopify.theme-check-vscode"
|
"editor.defaultFormatter": "Shopify.theme-check-vscode"
|
||||||
},
|
},
|
||||||
"[shellscript]": {
|
"[shellscript]": {
|
||||||
"editor.defaultFormatter": "mkhl.shfmt"
|
"editor.defaultFormatter": "foxundermoon.shell-format"
|
||||||
},
|
},
|
||||||
// Disable vscode built-in stylelint
|
// Disable vscode built-in stylelint
|
||||||
"css.validate": false,
|
"css.validate": false,
|
||||||
"scss.validate": false,
|
"scss.validate": false,
|
||||||
"less.validate": false,
|
"less.validate": false,
|
||||||
// Stylint extension settings
|
// Stylint extension settings
|
||||||
"stylelint.snippet": ["css", "scss"],
|
"stylelint.snippet": ["css", "less", "postcss", "scss"],
|
||||||
"stylelint.validate": ["css", "scss"],
|
"stylelint.validate": ["css", "less", "postcss", "scss"]
|
||||||
// Run tasks in macOS
|
|
||||||
"terminal.integrated.profiles.osx": {
|
|
||||||
"zsh": { "path": "/bin/zsh", "args": ["-l", "-i"] }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
64
.vscode/tasks.json
vendored
64
.vscode/tasks.json
vendored
|
@ -1,64 +0,0 @@
|
||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "Run Jekyll Server",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "./tools/run.sh",
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Runs the Jekyll server with live reload."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build Jekyll Site",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "./tools/test.sh",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build the Jekyll site for production."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build JS (watch)",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run watch:js",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build JS files in watch mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build CSS",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run build:css",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build CSS files."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build JS & CSS",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run build",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build JS & CSS for production."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Run Jekyll Server + Build JS (watch)",
|
|
||||||
"dependsOn": ["Run Jekyll Server", "Build JS (watch)"],
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"detail": "Runs both the Jekyll server with live reload and build JS files in watch mode."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
13
Gemfile
13
Gemfile
|
@ -4,11 +4,20 @@ source "https://rubygems.org"
|
||||||
|
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
gem "html-proofer", "~> 5.0", group: :test
|
group :test do
|
||||||
|
gem "html-proofer", "~> 4.4"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
|
# and associated library.
|
||||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||||
gem "tzinfo", ">= 1", "< 3"
|
gem "tzinfo", ">= 1", "< 3"
|
||||||
gem "tzinfo-data"
|
gem "tzinfo-data"
|
||||||
end
|
end
|
||||||
|
|
||||||
gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin]
|
# Performance-booster for watching directories on Windows
|
||||||
|
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||||
|
|
||||||
|
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||||
|
# do not have a Java counterpart.
|
||||||
|
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||||
|
|
25
README.md
25
README.md
|
@ -1,16 +1,14 @@
|
||||||
<!-- markdownlint-disable-next-line -->
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line -->
|
|
||||||
# Chirpy Jekyll Theme
|
# Chirpy Jekyll Theme
|
||||||
|
|
||||||
A minimal, responsive, and feature-rich Jekyll theme for technical writing.
|
A minimal, responsive, and feature-rich Jekyll theme for technical writing.
|
||||||
|
|
||||||
[![CI](https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github)][ci]
|
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?color=brightgreen)][gem]
|
||||||
[![Codacy Badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]
|
[![CI](https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml/badge.svg?branch=master&event=push)][ci]
|
||||||
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod)][license]
|
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/4e556876a3c54d5e8f2d2857c4f43894)][codacy]
|
||||||
[![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange)][gem]
|
[![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy.svg)][license]
|
||||||
[![Open in Dev Containers](https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers)][open-container]
|
[![996.icu](https://img.shields.io/badge/link-996.icu-%23FF4D5B.svg)](https://996.icu)
|
||||||
|
|
||||||
[**Live Demo** →][demo]
|
[**Live Demo** →][demo]
|
||||||
|
|
||||||
|
@ -20,7 +18,7 @@
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Dark Theme
|
- Dark / Light Theme Mode
|
||||||
- Localized UI language
|
- Localized UI language
|
||||||
- Pinned Posts on Home Page
|
- Pinned Posts on Home Page
|
||||||
- Hierarchical Categories
|
- Hierarchical Categories
|
||||||
|
@ -30,13 +28,13 @@
|
||||||
- Syntax Highlighting
|
- Syntax Highlighting
|
||||||
- Mathematical Expressions
|
- Mathematical Expressions
|
||||||
- Mermaid Diagrams & Flowcharts
|
- Mermaid Diagrams & Flowcharts
|
||||||
- Dark Mode Images
|
- Dark / Light Mode Images
|
||||||
- Embed Media
|
- Embed Videos
|
||||||
- Comment Systems
|
- Disqus / Giscus / Utterances Comments
|
||||||
- Built-in Search
|
- Built-in Search
|
||||||
- Atom Feeds
|
- Atom Feeds
|
||||||
- PWA
|
- PWA
|
||||||
- Web Analytics
|
- Google Analytics / GoatCounter
|
||||||
- SEO & Performance Optimization
|
- SEO & Performance Optimization
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
@ -56,7 +54,7 @@ For details, see the "[Contributing Guidelines][contribute-guide]".
|
||||||
Thanks to [all the contributors][contributors] involved in the development of the project!
|
Thanks to [all the contributors][contributors] involved in the development of the project!
|
||||||
|
|
||||||
[![all-contributors](https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16)][contributors]
|
[![all-contributors](https://contrib.rocks/image?repo=cotes2020/jekyll-theme-chirpy&columns=16)][contributors]
|
||||||
<sub> — Made with [contrib.rocks](https://contrib.rocks)</sub>
|
<sub> —— Made with [contrib.rocks](https://contrib.rocks)</sub>
|
||||||
|
|
||||||
### Third-Party Assets
|
### Third-Party Assets
|
||||||
|
|
||||||
|
@ -72,7 +70,6 @@ This project is published under [MIT License][license].
|
||||||
[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
|
[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
|
||||||
[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
|
[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
|
||||||
[license]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE
|
[license]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE
|
||||||
[open-container]: https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/cotes2020/jekyll-theme-chirpy
|
|
||||||
[jekyllrb]: https://jekyllrb.com/
|
[jekyllrb]: https://jekyllrb.com/
|
||||||
[clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/
|
[clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/
|
||||||
[demo]: https://cotes2020.github.io/chirpy-demo/
|
[demo]: https://cotes2020.github.io/chirpy-demo/
|
||||||
|
|
37
_config.yml
37
_config.yml
|
@ -1,13 +1,13 @@
|
||||||
# The Site Configuration
|
# The Site Configuration
|
||||||
theme: jekyll-theme-chirpy
|
theme: jekyll-theme-chirpy
|
||||||
lang: en
|
lang: en
|
||||||
timezone: Europe/Istanbul
|
timezone: Europe/Istanbul
|
||||||
|
|
||||||
# See for Jekyll SEO Tag Settings: https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
# See for Jekyll SEO Tag Settings: https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
||||||
|
|
||||||
title: Aliberk Sandıkçı
|
title: Aliberk Sandıkçı
|
||||||
tagline: Personal Website & Blog
|
tagline: Personal Website & Blog
|
||||||
description: >-
|
description: >-
|
||||||
Personal Website & Blog of Aliberk Sandıkçı
|
Personal Website & Blog of Aliberk Sandıkçı
|
||||||
|
|
||||||
url: "https://asandikci.com"
|
url: "https://asandikci.com"
|
||||||
|
@ -15,28 +15,18 @@ baseurl: "/"
|
||||||
|
|
||||||
forgejo:
|
forgejo:
|
||||||
username: asandikci
|
username: asandikci
|
||||||
domain: "git.asandikci.com"
|
domain: 'git.aliberksandikci.com.tr'
|
||||||
|
|
||||||
github:
|
|
||||||
username: asandikci
|
|
||||||
|
|
||||||
social:
|
social:
|
||||||
name: Aliberk Sandıkçı
|
name: Aliberk Sandıkçı
|
||||||
email: contact@aliberksandikci.com.tr
|
email: contact@aliberksandikci.com.tr
|
||||||
links:
|
links:
|
||||||
- https://git.asandikci.com/asandikci
|
- https://git.aliberksandikci.com.tr/asandikci
|
||||||
- https://github.com/asandikci
|
|
||||||
- https://mastodon.social/@asandikci
|
- https://mastodon.social/@asandikci
|
||||||
- https://www.linkedin.com/in/asandikci
|
- https://www.linkedin.com/in/asandikci
|
||||||
|
|
||||||
theme_mode: # [light | dark]
|
theme_mode: # [light | dark]
|
||||||
|
|
||||||
# Web Analytics Settings
|
|
||||||
analytics:
|
|
||||||
umami:
|
|
||||||
id: 80f4b239-3529-46be-b7a1-df82c6967a87
|
|
||||||
domain: analytics.yayindasin.org
|
|
||||||
|
|
||||||
# the avatar on sidebar, support local or CORS resources
|
# the avatar on sidebar, support local or CORS resources
|
||||||
avatar: https://asandikci.com/assets/img/pp.png
|
avatar: https://asandikci.com/assets/img/pp.png
|
||||||
|
|
||||||
|
@ -48,9 +38,8 @@ social_preview_image: # string, local or CORS resources
|
||||||
toc: true
|
toc: true
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
# Global switch for the post-comment system. Keeping it empty means disabled.
|
active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
|
||||||
provider: # [disqus | utterances | giscus]
|
# The active options are as follows:
|
||||||
# The provider options are as follows:
|
|
||||||
disqus:
|
disqus:
|
||||||
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
|
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
|
||||||
# utterances settings › https://utteranc.es/
|
# utterances settings › https://utteranc.es/
|
||||||
|
@ -64,7 +53,6 @@ comments:
|
||||||
category:
|
category:
|
||||||
category_id:
|
category_id:
|
||||||
mapping: # optional, default to 'pathname'
|
mapping: # optional, default to 'pathname'
|
||||||
strict: # optional, default to '0'
|
|
||||||
input_position: # optional, default to 'bottom'
|
input_position: # optional, default to 'bottom'
|
||||||
lang: # optional, default to the value of `site.lang`
|
lang: # optional, default to the value of `site.lang`
|
||||||
reactions_enabled: # optional, default to the value of `1`
|
reactions_enabled: # optional, default to the value of `1`
|
||||||
|
@ -78,9 +66,9 @@ assets:
|
||||||
env: # [development | production]
|
env: # [development | production]
|
||||||
|
|
||||||
pwa:
|
pwa:
|
||||||
enabled: true # The option for PWA feature (installable)
|
enabled: true # the option for PWA feature (installable)
|
||||||
cache:
|
cache:
|
||||||
enabled: true # The option for PWA offline cache
|
enabled: true # the option for PWA offline cache
|
||||||
# Paths defined here will be excluded from the PWA cache.
|
# Paths defined here will be excluded from the PWA cache.
|
||||||
# Usually its value is the `baseurl` of another website that
|
# Usually its value is the `baseurl` of another website that
|
||||||
# shares the same domain name as the current website.
|
# shares the same domain name as the current website.
|
||||||
|
@ -92,7 +80,6 @@ paginate: 10
|
||||||
# ------------ The following options are not recommended to be modified ------------------
|
# ------------ The following options are not recommended to be modified ------------------
|
||||||
|
|
||||||
kramdown:
|
kramdown:
|
||||||
footnote_backlink: "↩︎"
|
|
||||||
syntax_highlighter: rouge
|
syntax_highlighter: rouge
|
||||||
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
|
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
|
||||||
css_class: highlight
|
css_class: highlight
|
||||||
|
@ -129,6 +116,10 @@ defaults:
|
||||||
values:
|
values:
|
||||||
layout: page
|
layout: page
|
||||||
permalink: /:title/
|
permalink: /:title/
|
||||||
|
- scope:
|
||||||
|
path: assets/js/dist
|
||||||
|
values:
|
||||||
|
swcache: true
|
||||||
|
|
||||||
sass:
|
sass:
|
||||||
style: compressed
|
style: compressed
|
||||||
|
@ -149,7 +140,7 @@ exclude:
|
||||||
- tools
|
- tools
|
||||||
- README.md
|
- README.md
|
||||||
- LICENSE
|
- LICENSE
|
||||||
- "*.config.js"
|
- rollup.config.js
|
||||||
- package*.json
|
- package*.json
|
||||||
|
|
||||||
jekyll-archives:
|
jekyll-archives:
|
||||||
|
|
|
@ -34,16 +34,4 @@
|
||||||
|
|
||||||
- type: rss
|
- type: rss
|
||||||
icon: "fas fa-rss"
|
icon: "fas fa-rss"
|
||||||
noblank: true
|
noblank: true
|
||||||
#
|
|
||||||
# - type: bluesky
|
|
||||||
# icon: 'fa-brands fa-bluesky'
|
|
||||||
# url: '' # Fill with your Bluesky profile link
|
|
||||||
#
|
|
||||||
# - type: reddit
|
|
||||||
# icon: 'fa-brands fa-reddit'
|
|
||||||
# url: '' # Fill with your Reddit profile link
|
|
||||||
#
|
|
||||||
# - type: threads
|
|
||||||
# icon: 'fa-brands fa-threads'
|
|
||||||
# url: '' # Fill with your Threads profile link
|
|
|
@ -1,66 +0,0 @@
|
||||||
# The contact options.
|
|
||||||
|
|
||||||
- type: forgejo
|
|
||||||
icon: "fa-solid fa-code-branch"
|
|
||||||
url: 'https://git.aliberksandikci.com.tr/'
|
|
||||||
|
|
||||||
- type: xmpp
|
|
||||||
icon: 'fa fa-xmpp'
|
|
||||||
url: 'xmpp:asandikci@aliberksandikci.com.tr'
|
|
||||||
|
|
||||||
- type: email
|
|
||||||
icon: "fas fa-envelope"
|
|
||||||
noblank: false
|
|
||||||
|
|
||||||
- type: mastodon
|
|
||||||
icon: 'fa fa-mastodon'
|
|
||||||
url: 'https://mastodon.social/@asandikci/'
|
|
||||||
|
|
||||||
- type: linkedin
|
|
||||||
icon: 'fab fa-linkedin'
|
|
||||||
url: 'https://linkedin.com/in/asandikci'
|
|
||||||
|
|
||||||
- type: discord
|
|
||||||
icon: 'fa fa-discord'
|
|
||||||
url: 'https://discord.com/users/987999573479944222'
|
|
||||||
|
|
||||||
- type: instagram
|
|
||||||
icon: 'fa fa-instagram'
|
|
||||||
url: 'https://instagram.com/aliberksandikci'
|
|
||||||
|
|
||||||
- type: codeberg
|
|
||||||
icon: 'fl-codeberg'
|
|
||||||
url: 'https://codeberg.org/asandikci'
|
|
||||||
|
|
||||||
- type: rss
|
|
||||||
icon: "fas fa-rss"
|
|
||||||
<<<<<<< HEAD
|
|
||||||
noblank: true
|
|
||||||
=======
|
|
||||||
noblank: true
|
|
||||||
# Uncomment and complete the url below to enable more contact options
|
|
||||||
#
|
|
||||||
# - type: mastodon
|
|
||||||
# icon: 'fab fa-mastodon' # icons powered by <https://fontawesome.com/>
|
|
||||||
# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification
|
|
||||||
#
|
|
||||||
# - type: linkedin
|
|
||||||
# icon: 'fab fa-linkedin' # icons powered by <https://fontawesome.com/>
|
|
||||||
# url: '' # Fill with your Linkedin homepage
|
|
||||||
#
|
|
||||||
# - type: stack-overflow
|
|
||||||
# icon: 'fab fa-stack-overflow'
|
|
||||||
# url: '' # Fill with your stackoverflow homepage
|
|
||||||
#
|
|
||||||
# - type: bluesky
|
|
||||||
# icon: 'fa-brands fa-bluesky'
|
|
||||||
# url: '' # Fill with your Bluesky profile link
|
|
||||||
#
|
|
||||||
# - type: reddit
|
|
||||||
# icon: 'fa-brands fa-reddit'
|
|
||||||
# url: '' # Fill with your Reddit profile link
|
|
||||||
#
|
|
||||||
# - type: threads
|
|
||||||
# icon: 'fa-brands fa-threads'
|
|
||||||
# url: '' # Fill with your Threads profile link
|
|
||||||
>>>>>>> upstream_master
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: باستخدام :PLATFORM السمة :THEME
|
meta: باستخدام :PLATFORM السمة :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
|
statment: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: يتوفر اصدار جديد للمحتوى.
|
update_found: يتوفر اصدار جديد للمحتوى.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Създадено чрез :PLATFORM и :THEME тема
|
meta: Създадено чрез :PLATFORM и :THEME тема
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Съжалявам, но на този URL адрес няма налично съдържание.
|
statment: Съжалявам, но на този URL адрес няма налично съдържание.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Налична е нова версия на съдържанието.
|
update_found: Налична е нова версия на съдържанието.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Použití :PLATFORM s motivem :THEME
|
meta: Použití :PLATFORM s motivem :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
|
statment: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Je k dispozici nová verze obsahu.
|
update_found: Je k dispozici nová verze obsahu.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
meta: Powered by :PLATFORM with :THEME theme
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
|
statment: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Eine neue Version ist verfügbar.
|
update_found: Eine neue Version ist verfügbar.
|
||||||
|
@ -76,7 +76,7 @@ df:
|
||||||
post:
|
post:
|
||||||
strftime: "%d.%m.%Y"
|
strftime: "%d.%m.%Y"
|
||||||
dayjs: "DD.MM.YYYY"
|
dayjs: "DD.MM.YYYY"
|
||||||
|
|
||||||
# categories page
|
# categories page
|
||||||
categories:
|
categories:
|
||||||
category_measure:
|
category_measure:
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Αξιοποιώντας την :PLATFORM theme :THEME
|
meta: Αξιοποιώντας την :PLATFORM theme :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει.
|
statment: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου.
|
update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Using the :THEME theme for :PLATFORM.
|
meta: Using the :THEME theme for :PLATFORM.
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
statment: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: A new version of content is available.
|
update_found: A new version of content is available.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Hecho con :PLATFORM usando el tema :THEME
|
meta: Hecho con :PLATFORM usando el tema :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
|
statment: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Hay una nueva versión de contenido disponible.
|
update_found: Hay una nueva versión de contenido disponible.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: Käytetään :PLATFORM iä Teema :THEME
|
meta: Käytetään :PLATFORM iä Teema :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
|
statment: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Uusi versio sisällöstä on saatavilla.
|
update_found: Uusi versio sisällöstä on saatavilla.
|
||||||
|
|
|
@ -14,7 +14,7 @@ tabs:
|
||||||
categories: Catégories
|
categories: Catégories
|
||||||
tags: Tags
|
tags: Tags
|
||||||
archives: Archives
|
archives: Archives
|
||||||
about: À propos
|
about: A propos de
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
# the text displayed in the search bar & search results
|
||||||
search:
|
search:
|
||||||
|
@ -32,18 +32,18 @@ copyright:
|
||||||
license:
|
license:
|
||||||
template: Cet article est sous licence :LICENSE_NAME par l'auteur.
|
template: Cet article est sous licence :LICENSE_NAME par l'auteur.
|
||||||
name: CC BY 4.0
|
name: CC BY 4.0
|
||||||
link: https://creativecommons.org/licenses/by/4.0/deed.fr
|
link: https://creativecommons.org/licenses/by/4.0/
|
||||||
|
|
||||||
# Displayed in the footer
|
# Displayed in the footer
|
||||||
brief: Certains droits réservés.
|
brief: Certains droits réservés.
|
||||||
verbose: >-
|
verbose: >-
|
||||||
Sauf mention contraire, les articles de ce site sont publiés
|
Sauf mention contraire, les articles de ce site sont publiés sous licence
|
||||||
sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
|
sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
|
||||||
|
|
||||||
meta: Propulsé par :PLATFORM avec le thème :THEME
|
meta: Propulsé par :PLATFORM avec le thème :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
|
statment: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Une nouvelle version du contenu est disponible.
|
update_found: Une nouvelle version du contenu est disponible.
|
||||||
|
|
|
@ -14,23 +14,24 @@ tabs:
|
||||||
categories: Kategóriák
|
categories: Kategóriák
|
||||||
tags: Címkék
|
tags: Címkék
|
||||||
archives: Archívum
|
archives: Archívum
|
||||||
about: Bemutatkozás
|
about: Rólam
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
# the text displayed in the search bar & search results
|
||||||
search:
|
search:
|
||||||
hint: keresés
|
hint: keresés
|
||||||
cancel: Mégse
|
cancel: Mégse
|
||||||
no_results: Hoppá! Nincs találat a keresésre.
|
no_results: Oops! Nincs találat a keresésre.
|
||||||
|
|
||||||
panel:
|
panel:
|
||||||
lastmod: Legutóbb frissítve
|
lastmod: Legutóbb frissítve
|
||||||
trending_tags: Népszerű Címkék
|
trending_tags: Népszerű Címkék
|
||||||
toc: Tartalom
|
toc: Tartalom
|
||||||
|
links: Blog linkek
|
||||||
|
|
||||||
copyright:
|
copyright:
|
||||||
# Shown at the bottom of the post
|
# Shown at the bottom of the post
|
||||||
license:
|
license:
|
||||||
template: A bejegyzést a szerző :LICENSE_NAME licenc alatt engedélyezte.
|
template: A bejegyzés :LICENSE_NAME licenccel rendelkezik.
|
||||||
name: CC BY 4.0
|
name: CC BY 4.0
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
link: https://creativecommons.org/licenses/by/4.0/
|
||||||
|
|
||||||
|
@ -41,10 +42,10 @@ copyright:
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
|
Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
|
||||||
hacsak másképp nincs jelezve.
|
hacsak másképp nincs jelezve.
|
||||||
|
|
||||||
meta: Készítve :THEME témával a :PLATFORM platformra.
|
meta: Készítve :PLATFORM motorral :THEME témával
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
|
statment: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Elérhető a tartalom új verziója.
|
update_found: Elérhető a tartalom új verziója.
|
||||||
|
@ -72,21 +73,7 @@ post:
|
||||||
title: Link másolása
|
title: Link másolása
|
||||||
succeed: Link sikeresen másolva!
|
succeed: Link sikeresen másolva!
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y. %B. %e."
|
|
||||||
dayjs: "YYYY. MMMM D."
|
|
||||||
archives:
|
|
||||||
strftime: "%B"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
# categories page
|
||||||
categories:
|
categories:
|
||||||
category_measure:
|
category_measure: kategória
|
||||||
singular: kategória
|
post_measure: bejegyzés
|
||||||
plural: kategória
|
|
||||||
post_measure:
|
|
||||||
singular: bejegyzés
|
|
||||||
plural: bejegyzés
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Didukung oleh :PLATFORM dengan tema :THEME
|
meta: Didukung oleh :PLATFORM dengan tema :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
|
statment: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Versi konten baru tersedia.
|
update_found: Versi konten baru tersedia.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
|
|
||||||
meta: Servizio offerto da :PLATFORM con tema :THEME
|
meta: Servizio offerto da :PLATFORM con tema :THEME
|
||||||
not_found:
|
not_found:
|
||||||
statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
|
statment: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Nuova versione del contenuto disponibile.
|
update_found: Nuova versione del contenuto disponibile.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
meta: Powered by :PLATFORM with :THEME theme
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: 해당 URL은 존재하지 않습니다.
|
statment: 해당 URL은 존재하지 않습니다.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: 새 버전의 콘텐츠를 사용할 수 있습니다.
|
update_found: 새 버전의 콘텐츠를 사용할 수 있습니다.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
meta: Powered by :PLATFORM with :THEME theme
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။
|
statment: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။
|
update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Feito com :PLATFORM usando o tema :THEME
|
meta: Feito com :PLATFORM usando o tema :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Desculpe, a página não foi encontrada.
|
statment: Desculpe, a página não foi encontrada.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Uma nova versão do conteúdo está disponível.
|
update_found: Uma nova versão do conteúdo está disponível.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: Использует тему :THEME для :PLATFORM
|
meta: Использует тему :THEME для :PLATFORM
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
|
statment: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Доступна новая версия контента.
|
update_found: Доступна новая версия контента.
|
||||||
|
@ -76,7 +76,7 @@ df:
|
||||||
post:
|
post:
|
||||||
strftime: "%d.%m.%Y"
|
strftime: "%d.%m.%Y"
|
||||||
dayjs: "DD.MM.YYYY"
|
dayjs: "DD.MM.YYYY"
|
||||||
|
|
||||||
# categories page
|
# categories page
|
||||||
categories:
|
categories:
|
||||||
category_measure:
|
category_measure:
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Uporabljena :PLATFORM tema :THEME #Using the :PLATFORM theme :THEME
|
meta: Uporabljena :PLATFORM tema :THEME #Using the :PLATFORM theme :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
statment: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Novejša različica vsebine je na voljo. #A new version of content is available.
|
update_found: Novejša različica vsebine je na voljo. #A new version of content is available.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Byggd med :PLATFORM och temat :THEME
|
meta: Byggd med :PLATFORM och temat :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
|
statment: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Det finns en ny version av innehållet.
|
update_found: Det finns en ny version av innehållet.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: กำลังใช้ธีมของ :PLATFORM ชื่อ :THEME
|
meta: กำลังใช้ธีมของ :PLATFORM ชื่อ :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่
|
statment: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: มีเวอร์ชันใหม่ของเนื้อหา
|
update_found: มีเวอร์ชันใหม่ของเนื้อหา
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: :PLATFORM ve :THEME teması
|
meta: :PLATFORM ve :THEME teması
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
|
statment: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: İçeriğin yeni bir sürümü mevcut.
|
update_found: İçeriğin yeni bir sürümü mevcut.
|
||||||
|
|
|
@ -43,7 +43,7 @@ copyright:
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
meta: Powered by :PLATFORM with :THEME theme
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Вибачте, це посилання вказує на ресурс, що не існує.
|
statment: Вибачте, це посилання вказує на ресурс, що не існує.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Доступна нова версія вмісту.
|
update_found: Доступна нова версія вмісту.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME
|
meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
|
statment: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Đã có phiên bản mới của nội dung.
|
update_found: Đã có phiên bản mới của nội dung.
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: 本站采用 :PLATFORM 主题 :THEME
|
meta: 本站采用 :PLATFORM 主题 :THEME
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
|
statment: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: 发现新版本的内容。
|
update_found: 发现新版本的内容。
|
||||||
|
|
|
@ -42,7 +42,7 @@ copyright:
|
||||||
meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題
|
meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
|
statment: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: 發現新版本更新。
|
update_found: 發現新版本更新。
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
- extension: mp3
|
|
||||||
mime_type: mpeg
|
|
||||||
- extension: mov
|
|
||||||
mime_type: quicktime
|
|
||||||
- extension: avi
|
|
||||||
mime_type: x-msvideo
|
|
||||||
- extension: mkv
|
|
||||||
mime_type: x-matroska
|
|
||||||
- extension: ogv
|
|
||||||
mime_type: ogg
|
|
||||||
- extension: weba
|
|
||||||
mime_type: webm
|
|
||||||
- extension: 3gp
|
|
||||||
mime_type: 3gpp
|
|
||||||
- extension: 3g2
|
|
||||||
mime_type: 3gpp2
|
|
||||||
- extension: mid
|
|
||||||
mime_type: midi
|
|
|
@ -4,6 +4,13 @@ webfonts: /assets/lib/fonts/main.css
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
|
|
||||||
|
jquery:
|
||||||
|
js: /assets/lib/jquery/jquery.min.js
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
css: /assets/lib/bootstrap/bootstrap.min.css
|
||||||
|
js: /assets/lib/bootstrap/bootstrap.bundle.min.js
|
||||||
|
|
||||||
toc:
|
toc:
|
||||||
css: /assets/lib/tocbot/tocbot.min.css
|
css: /assets/lib/tocbot/tocbot.min.css
|
||||||
js: /assets/lib/tocbot/tocbot.min.js
|
js: /assets/lib/tocbot/tocbot.min.js
|
||||||
|
@ -20,13 +27,13 @@ mermaid:
|
||||||
dayjs:
|
dayjs:
|
||||||
js:
|
js:
|
||||||
common: /assets/lib/dayjs/dayjs.min.js
|
common: /assets/lib/dayjs/dayjs.min.js
|
||||||
locale: /assets/lib/dayjs/locale/en.js
|
locale: /assets/lib/dayjs/locale/en.min.js
|
||||||
relativeTime: /assets/lib/dayjs/plugin/relativeTime.js
|
relativeTime: /assets/lib/dayjs/plugin/relativeTime.min.js
|
||||||
localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.js
|
localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.min.js
|
||||||
|
|
||||||
glightbox:
|
magnific-popup:
|
||||||
css: /assets/lib/glightbox/glightbox.min.css
|
css: /assets/lib/magnific-popup/magnific-popup.css
|
||||||
js: /assets/lib/glightbox/glightbox.min.js
|
js: /assets/lib/magnific-popup/jquery.magnific-popup.min.js
|
||||||
|
|
||||||
lazy-polyfill:
|
lazy-polyfill:
|
||||||
css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css
|
css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css
|
||||||
|
|
|
@ -1,27 +1,32 @@
|
||||||
# Resource Hints
|
# CDNs
|
||||||
resource_hints:
|
|
||||||
- url: https://fonts.googleapis.com
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
- rel: dns-prefetch
|
|
||||||
- url: https://fonts.gstatic.com
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
opts: [crossorigin]
|
|
||||||
- rel: dns-prefetch
|
|
||||||
- url: https://cdn.jsdelivr.net
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
- rel: dns-prefetch
|
|
||||||
|
|
||||||
# Web Fonts
|
cdns:
|
||||||
webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
|
# Google Fonts
|
||||||
|
- url: https://fonts.googleapis.com
|
||||||
|
- url: https://fonts.gstatic.com
|
||||||
|
args: crossorigin
|
||||||
|
- url: https://fonts.googleapis.com
|
||||||
|
# jsDelivr CDN
|
||||||
|
- url: https://cdn.jsdelivr.net
|
||||||
|
# polyfill.io for math (cdnjs.cloudflare.com/polyfill)
|
||||||
|
- url: https://cdnjs.cloudflare.com
|
||||||
|
|
||||||
|
# fonts
|
||||||
|
|
||||||
|
webfonts: https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
|
|
||||||
|
jquery:
|
||||||
|
js: https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
css: https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css
|
||||||
|
js: https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js
|
||||||
|
|
||||||
toc:
|
toc:
|
||||||
css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css
|
css: https://cdn.jsdelivr.net/npm/tocbot@4.25.0/dist/tocbot.min.css
|
||||||
js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js
|
js: https://cdn.jsdelivr.net/npm/tocbot@4.25.0/dist/tocbot.min.js
|
||||||
|
|
||||||
fontlogos:
|
fontlogos:
|
||||||
css: https://cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css
|
css: https://cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css
|
||||||
|
@ -30,7 +35,7 @@ forkawesome:
|
||||||
css: https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css
|
css: https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css
|
||||||
|
|
||||||
fontawesome:
|
fontawesome:
|
||||||
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css
|
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.5.2/css/all.min.css
|
||||||
|
|
||||||
ballooncss:
|
ballooncss:
|
||||||
css: https://unpkg.com/balloon-css/balloon.min.css
|
css: https://unpkg.com/balloon-css/balloon.min.css
|
||||||
|
@ -39,18 +44,18 @@ 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.0.2/dist/mermaid.min.js
|
js: https://cdn.jsdelivr.net/npm/mermaid@10.8.0/dist/mermaid.min.js
|
||||||
|
|
||||||
dayjs:
|
dayjs:
|
||||||
js:
|
js:
|
||||||
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
|
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js
|
||||||
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
|
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/locale/:LOCALE.min.js
|
||||||
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
|
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/plugin/relativeTime.min.js
|
||||||
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
|
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/plugin/localizedFormat.min.js
|
||||||
|
|
||||||
glightbox:
|
magnific-popup:
|
||||||
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
|
css: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css
|
||||||
js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js
|
js: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js
|
||||||
|
|
||||||
lazy-polyfill:
|
lazy-polyfill:
|
||||||
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
|
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
platforms:
|
platforms:
|
||||||
|
|
||||||
- type: Linkedin
|
- type: Linkedin
|
||||||
icon: "fab fa-linkedin"
|
icon: "fab fa-linkedin"
|
||||||
link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
||||||
|
@ -14,7 +15,7 @@ platforms:
|
||||||
- label: fosstodon.org
|
- label: fosstodon.org
|
||||||
link: "https://fosstodon.org/"
|
link: "https://fosstodon.org/"
|
||||||
- label: mastodon.com.tr
|
- label: mastodon.com.tr
|
||||||
link: "https://mastodon.com.tr/"
|
link: "https://mastodon.com.tr/"
|
||||||
|
|
||||||
- type: Twitter
|
- type: Twitter
|
||||||
icon: "fa-brands fa-square-x-twitter"
|
icon: "fa-brands fa-square-x-twitter"
|
||||||
|
@ -27,50 +28,3 @@ platforms:
|
||||||
- type: Telegram
|
- type: Telegram
|
||||||
icon: "fab fa-telegram"
|
icon: "fab fa-telegram"
|
||||||
link: "https://t.me/share/url?url=URL&text=TITLE"
|
link: "https://t.me/share/url?url=URL&text=TITLE"
|
||||||
|
|
||||||
- type: Bluesky
|
|
||||||
icon: "fa-brands fa-bluesky"
|
|
||||||
link: "https://bsky.app/intent/compose?text=TITLE%20URL"
|
|
||||||
|
|
||||||
- type: Reddit
|
|
||||||
icon: "fa-brands fa-square-reddit"
|
|
||||||
link: "https://www.reddit.com/submit?url=URL&title=TITLE"
|
|
||||||
|
|
||||||
- type: Threads
|
|
||||||
icon: "fa-brands fa-square-threads"
|
|
||||||
link: "https://www.threads.net/intent/post?text=TITLE%20URL"
|
|
||||||
|
|
||||||
# Uncomment below if you need to.
|
|
||||||
#
|
|
||||||
# - type: Linkedin
|
|
||||||
# icon: "fab fa-linkedin"
|
|
||||||
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
|
||||||
#
|
|
||||||
# - type: Weibo
|
|
||||||
# icon: "fab fa-weibo"
|
|
||||||
# link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
|
||||||
#
|
|
||||||
# - type: Mastodon
|
|
||||||
# icon: "fa-brands fa-mastodon"
|
|
||||||
# # See: https://github.com/justinribeiro/share-to-mastodon#properties
|
|
||||||
# instances:
|
|
||||||
# - label: mastodon.social
|
|
||||||
# link: "https://mastodon.social/"
|
|
||||||
# - label: mastodon.online
|
|
||||||
# link: "https://mastodon.online/"
|
|
||||||
# - label: fosstodon.org
|
|
||||||
# link: "https://fosstodon.org/"
|
|
||||||
# - label: photog.social
|
|
||||||
# link: "https://photog.social/"
|
|
||||||
#
|
|
||||||
# - type: Bluesky
|
|
||||||
# icon: "fa-brands fa-bluesky"
|
|
||||||
# link: "https://bsky.app/intent/compose?text=TITLE%20URL"
|
|
||||||
#
|
|
||||||
# - type: Reddit
|
|
||||||
# icon: "fa-brands fa-square-reddit"
|
|
||||||
# link: "https://www.reddit.com/submit?url=URL&title=TITLE"
|
|
||||||
#
|
|
||||||
# - type: Threads
|
|
||||||
# icon: "fa-brands fa-square-threads"
|
|
||||||
# link: "https://www.threads.net/intent/post?text=TITLE%20URL"
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<!-- Cloudflare Web Analytics -->
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="https://static.cloudflareinsights.com/beacon.min.js"
|
|
||||||
data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}'
|
|
||||||
></script>
|
|
||||||
<!-- End Cloudflare Web Analytics -->
|
|
|
@ -1,7 +0,0 @@
|
||||||
<!-- Fathom -->
|
|
||||||
<script
|
|
||||||
src="https://cdn.usefathom.com/script.js"
|
|
||||||
data-site="{{ site.analytics.fathom.id }}"
|
|
||||||
defer>
|
|
||||||
</script>
|
|
||||||
<!-- End Fathom Code -->
|
|
|
@ -1,6 +0,0 @@
|
||||||
<!-- GoatCounter -->
|
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="https://gc.zgo.at/count.js"
|
|
||||||
data-goatcounter="https://{{ site.analytics.goatcounter.id }}.goatcounter.com/count"
|
|
||||||
></script>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
||||||
<script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script>
|
|
||||||
<script>
|
|
||||||
document.addEventListener('DOMContentLoaded', function (event) {
|
|
||||||
window.dataLayer = window.dataLayer || [];
|
|
||||||
function gtag() {
|
|
||||||
dataLayer.push(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtag('js', new Date());
|
|
||||||
gtag('config', '{{ site.analytics.google.id }}');
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<!-- Matomo -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
var _paq = window._paq = window._paq || [];
|
|
||||||
_paq.push(['trackPageView']);
|
|
||||||
_paq.push(['enableLinkTracking']);
|
|
||||||
(function() {
|
|
||||||
var u="//{{ site.analytics.matomo.domain }}/";
|
|
||||||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
|
||||||
_paq.push(['setSiteId', {{ site.analytics.matomo.id }}]);
|
|
||||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
|
||||||
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
<!-- End Matomo Code -->
|
|
|
@ -1,6 +0,0 @@
|
||||||
<!-- Umami -->
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="{{ site.analytics.umami.domain }}/script.js"
|
|
||||||
data-website-id="{{ site.analytics.umami.id }}"
|
|
||||||
></script>
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!-- The comments switcher -->
|
<!-- The comments switcher -->
|
||||||
{% if page.comments and site.comments.provider %}
|
{% if page.comments and site.comments.active %}
|
||||||
{% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %}
|
{% capture path %}comments/{{ site.comments.active }}.html{% endcapture %}
|
||||||
{% include {{ path }} %}
|
{% include {{ path }} %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
this.page.identifier = '{{ page.url }}';
|
this.page.identifier = '{{ page.url }}';
|
||||||
};
|
};
|
||||||
|
|
||||||
{%- comment -%} Lazy loading {%- endcomment -%}
|
/* Lazy loading */
|
||||||
var disqus_observer = new IntersectionObserver(
|
var disqus_observer = new IntersectionObserver(
|
||||||
function (entries) {
|
function (entries) {
|
||||||
if (entries[0].isIntersecting) {
|
if (entries[0].isIntersecting) {
|
||||||
|
@ -28,12 +28,12 @@
|
||||||
{ threshold: [0] }
|
{ threshold: [0] }
|
||||||
);
|
);
|
||||||
|
|
||||||
disqus_observer.observe(document.getElementById('disqus_thread'));
|
disqus_observer.observe(document.querySelector('#disqus_thread'));
|
||||||
|
|
||||||
{%- comment -%} Auto switch theme {%- endcomment -%}
|
/* Auto switch theme */
|
||||||
function reloadDisqus() {
|
function reloadDisqus() {
|
||||||
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
||||||
{%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
|
/* Disqus hasn't been loaded */
|
||||||
if (typeof DISQUS === 'undefined') {
|
if (typeof DISQUS === 'undefined') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.getElementById('mode-toggle')) {
|
if (document.querySelector('.mode-toggle')) {
|
||||||
window.addEventListener('message', reloadDisqus);
|
window.addEventListener('message', reloadDisqus);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
(function () {
|
(function () {
|
||||||
const origin = 'https://giscus.app';
|
const origin = 'https://giscus.app';
|
||||||
|
const iframe = 'iframe.giscus-frame';
|
||||||
const lightTheme = 'light';
|
const lightTheme = 'light';
|
||||||
const darkTheme = 'dark_dimmed';
|
const darkTheme = 'dark_dimmed';
|
||||||
|
|
||||||
|
@ -17,12 +18,6 @@
|
||||||
initTheme = darkTheme;
|
initTheme = darkTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
let lang = '{{ site.comments.giscus.lang | default: lang }}';
|
|
||||||
{%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
|
|
||||||
if (lang.length > 2 && !lang.startsWith('zh')) {
|
|
||||||
lang = lang.slice(0, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
let giscusAttributes = {
|
let giscusAttributes = {
|
||||||
src: 'https://giscus.app/client.js',
|
src: 'https://giscus.app/client.js',
|
||||||
'data-repo': '{{ site.comments.giscus.repo}}',
|
'data-repo': '{{ site.comments.giscus.repo}}',
|
||||||
|
@ -30,12 +25,11 @@
|
||||||
'data-category': '{{ site.comments.giscus.category }}',
|
'data-category': '{{ site.comments.giscus.category }}',
|
||||||
'data-category-id': '{{ site.comments.giscus.category_id }}',
|
'data-category-id': '{{ site.comments.giscus.category_id }}',
|
||||||
'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
|
'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
|
||||||
'data-strict' : '{{ site.comments.giscus.strict | default: '0' }}',
|
|
||||||
'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
|
'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
|
||||||
'data-emit-metadata': '0',
|
'data-emit-metadata': '0',
|
||||||
'data-theme': initTheme,
|
'data-theme': initTheme,
|
||||||
'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
|
'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
|
||||||
'data-lang': lang,
|
'data-lang': '{{ site.comments.giscus.lang | default: lang }}',
|
||||||
'data-loading': 'lazy',
|
'data-loading': 'lazy',
|
||||||
crossorigin: 'anonymous',
|
crossorigin: 'anonymous',
|
||||||
async: ''
|
async: ''
|
||||||
|
@ -53,7 +47,7 @@
|
||||||
event.data &&
|
event.data &&
|
||||||
event.data.direction === ModeToggle.ID
|
event.data.direction === ModeToggle.ID
|
||||||
) {
|
) {
|
||||||
{%- comment -%} global theme mode changed {%- endcomment -%}
|
/* global theme mode changed */
|
||||||
const mode = event.data.message;
|
const mode = event.data.message;
|
||||||
const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
||||||
|
|
||||||
|
@ -63,7 +57,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const giscus = document.getElementsByClassName('giscus-frame')[0].contentWindow;
|
const giscus = document.querySelector(iframe).contentWindow;
|
||||||
giscus.postMessage({ giscus: message }, origin);
|
giscus.postMessage({ giscus: message }, origin);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
(function () {
|
(function () {
|
||||||
const origin = 'https://utteranc.es';
|
const origin = 'https://utteranc.es';
|
||||||
|
const iframe = 'iframe.utterances-frame';
|
||||||
const lightTheme = 'github-light';
|
const lightTheme = 'github-light';
|
||||||
const darkTheme = 'github-dark';
|
const darkTheme = 'github-dark';
|
||||||
let initTheme = lightTheme;
|
let initTheme = lightTheme;
|
||||||
|
@ -25,12 +26,12 @@
|
||||||
addEventListener('message', (event) => {
|
addEventListener('message', (event) => {
|
||||||
let theme;
|
let theme;
|
||||||
|
|
||||||
{%- comment -%} credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> {%- endcomment -%}
|
/* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
|
||||||
if (event.origin === origin) {
|
if (event.origin === origin) {
|
||||||
{%- comment -%} page initial {%- endcomment -%}
|
/* page initial */
|
||||||
theme = initTheme;
|
theme = initTheme;
|
||||||
} else if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
} else if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
||||||
{%- comment -%} global theme mode changed {%- endcomment -%}
|
/* global theme mode changed */
|
||||||
const mode = event.data.message;
|
const mode = event.data.message;
|
||||||
theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
||||||
} else {
|
} else {
|
||||||
|
@ -42,7 +43,7 @@
|
||||||
theme: theme
|
theme: theme
|
||||||
};
|
};
|
||||||
|
|
||||||
const utterances = document.getElementsByClassName('utterances-frame')[0].contentWindow;
|
const utterances = document.querySelector(iframe).contentWindow;
|
||||||
utterances.postMessage(message, origin);
|
utterances.postMessage(message, origin);
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
{% assign src = include.src | strip %}
|
|
||||||
{% assign title = include.title | strip %}
|
|
||||||
{% assign types = include.types | default: '' | strip | split: '|' %}
|
|
||||||
|
|
||||||
{% unless src contains '://' %}
|
|
||||||
{%- capture src -%}
|
|
||||||
{% include media-url.html src=src subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<audio class="embed-audio" controls>
|
|
||||||
{% assign extension = src | split: '.' | last %}
|
|
||||||
{% assign types = extension | concat: types %}
|
|
||||||
|
|
||||||
{% assign ext_size = extension | size %}
|
|
||||||
{% assign src_size = src | size %}
|
|
||||||
{% assign slice_size = src_size | minus: ext_size %}
|
|
||||||
|
|
||||||
{% assign filepath = src | slice: 0, slice_size %}
|
|
||||||
|
|
||||||
{% for type in types %}
|
|
||||||
{% assign src = filepath | append: type %}
|
|
||||||
{% assign media_item = site.data.media | find: 'extension', type %}
|
|
||||||
{% assign mime_type = media_item.mime_type | default: type %}
|
|
||||||
<source src="{{ src }}" type="audio/{{ mime_type }}">
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
Your browser does not support the audio tag. Here is a
|
|
||||||
<a href="{{ src | strip }}">link to the audio file</a> instead.
|
|
||||||
</audio>
|
|
||||||
{% if title %}
|
|
||||||
<em>{{ title }}</em>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
|
@ -1,9 +1,10 @@
|
||||||
<iframe
|
<iframe
|
||||||
class="embed-video"
|
class="embed-video bilibili"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src="https://player.bilibili.com/player.html?bvid={{ include.id }}"
|
src="https://player.bilibili.com/player.html?bvid={{ include.id }}"
|
||||||
scrolling="no"
|
scrolling="no"
|
||||||
frameborder="0"
|
border="0"
|
||||||
|
frameborder="no"
|
||||||
framespacing="0"
|
framespacing="0"
|
||||||
allowfullscreen="true"
|
allowfullscreen="true"
|
||||||
></iframe>
|
></iframe>
|
|
@ -1,59 +0,0 @@
|
||||||
{% assign video_url = include.src %}
|
|
||||||
{% assign title = include.title %}
|
|
||||||
{% assign poster_url = include.poster %}
|
|
||||||
{% assign types = include.types | default: '' | strip | split: '|' %}
|
|
||||||
|
|
||||||
{% unless video_url contains '://' %}
|
|
||||||
{%- capture video_url -%}
|
|
||||||
{% include media-url.html src=video_url subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% if poster_url %}
|
|
||||||
{% unless poster_url contains '://' %}
|
|
||||||
{%- capture poster_url -%}
|
|
||||||
{% include media-url.html src=poster_url subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
{% assign poster = 'poster="' | append: poster_url | append: '"' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign attributes = 'controls' %}
|
|
||||||
|
|
||||||
{% if include.autoplay %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'autoplay' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if include.loop %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'loop' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if include.muted %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'muted' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<video class="embed-video file" {{ poster }} {{ attributes }}>
|
|
||||||
{% assign extension = video_url | split: '.' | last %}
|
|
||||||
{% assign types = extension | concat: types %}
|
|
||||||
|
|
||||||
{% assign ext_size = extension | size %}
|
|
||||||
{% assign src_size = video_url | size %}
|
|
||||||
{% assign slice_size = src_size | minus: ext_size %}
|
|
||||||
|
|
||||||
{% assign filepath = video_url | slice: 0, slice_size %}
|
|
||||||
|
|
||||||
{% for type in types %}
|
|
||||||
{% assign src = filepath | append: type %}
|
|
||||||
{% assign media_item = site.data.media | find: 'extension', type %}
|
|
||||||
{% assign mime_type = media_item.mime_type | default: type %}
|
|
||||||
<source src="{{ src }}" type="video/{{ mime_type }}">
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
Your browser does not support the video tag. Here is a
|
|
||||||
<a href="{{ video_url | strip }}">link to the video file</a> instead.
|
|
||||||
</video>
|
|
||||||
{% if title %}
|
|
||||||
<em>{{ title }}</em>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
|
@ -1,5 +1,5 @@
|
||||||
<iframe
|
<iframe
|
||||||
class="embed-video"
|
class="embed-video youtube"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src="https://www.youtube.com/embed/{{ include.id }}"
|
src="https://www.youtube.com/embed/{{ include.id }}"
|
||||||
title="YouTube video player"
|
title="YouTube video player"
|
||||||
|
|
|
@ -34,14 +34,7 @@
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
|
|
||||||
{%- capture _theme -%}
|
{%- capture _theme -%}
|
||||||
<a
|
<a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a>
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
|
||||||
title="v{{ theme.version }}"
|
|
||||||
href="https://github.com/cotes2020/jekyll-theme-chirpy"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>Chirpy</a>
|
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
|
|
||||||
{{ site.data.locales[include.lang].meta | replace: ':PLATFORM', _platform | replace: ':THEME', _theme }}
|
{{ site.data.locales[include.lang].meta | replace: ':PLATFORM', _platform | replace: ':THEME', _theme }}
|
||||||
|
|
8
_includes/goatcounter.html
Normal file
8
_includes/goatcounter.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<!-- GoatCounter -->
|
||||||
|
|
||||||
|
<script
|
||||||
|
data-goatcounter="https://{{ site.goatcounter.id }}.goatcounter.com/count"
|
||||||
|
async
|
||||||
|
src="https://gc.zgo.at/count.js"
|
||||||
|
></script>
|
||||||
|
|
14
_includes/google-analytics.html
Normal file
14
_includes/google-analytics.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<!--
|
||||||
|
The GA snippet
|
||||||
|
-->
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics.id }}"></script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function(event) {
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', '{{ site.google_analytics.id }}');
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -1,128 +1,120 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
<meta
|
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||||
name="theme-color"
|
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||||
media="(prefers-color-scheme: light)"
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
content="#f7f7f7"
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="theme-color"
|
|
||||||
media="(prefers-color-scheme: dark)"
|
|
||||||
content="#1b1b1e"
|
|
||||||
/>
|
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
|
||||||
<meta
|
|
||||||
name="apple-mobile-web-app-status-bar-style"
|
|
||||||
content="black-translucent"
|
|
||||||
/>
|
|
||||||
<meta
|
<meta
|
||||||
name="viewport"
|
name="viewport"
|
||||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||||
/>
|
>
|
||||||
|
|
||||||
{%- capture seo_tags -%} {% seo title=false %} {%- endcapture -%}
|
{%- capture seo_tags -%}
|
||||||
|
{% seo title=false %}
|
||||||
|
{%- endcapture -%}
|
||||||
|
|
||||||
<!-- Setup Open Graph image -->
|
<!-- Setup Open Graph image -->
|
||||||
|
|
||||||
{% if page.image %} {% assign src = page.image.path | default: page.image %}
|
{% if page.image %}
|
||||||
{% unless src contains '://' %} {%- capture img_url -%} {% include
|
{% assign src = page.image.path | default: page.image %}
|
||||||
media-url.html src=src subpath=page.media_subpath absolute=true %} {%-
|
|
||||||
endcapture -%} {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture
|
{% unless src contains '://' %}
|
||||||
-%} {%- capture new_url -%}{{ img_url }}{%- endcapture -%} {% assign seo_tags
|
{%- capture img_url -%}
|
||||||
= seo_tags | replace: old_url, new_url %} {% endunless %} {% elsif
|
{% include img-url.html src=src img_path=page.img_path absolute=true %}
|
||||||
site.social_preview_image %} {%- capture img_url -%} {% include media-url.html
|
{%- endcapture -%}
|
||||||
src=site.social_preview_image absolute=true %} {%- endcapture -%} {%- capture
|
|
||||||
og_image -%}
|
{%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%}
|
||||||
<meta property="og:image" content="{{ img_url }}" />
|
{%- capture new_url -%}{{ img_url }}{%- endcapture -%}
|
||||||
{%- endcapture -%} {%- capture twitter_image -%}
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
{% assign seo_tags = seo_tags | replace: old_url, new_url %}
|
||||||
<meta property="twitter:image" content="{{ img_url }}" />
|
{% endunless %}
|
||||||
{%- endcapture -%} {% assign old_meta_clip = '
|
|
||||||
<meta name="twitter:card" content="summary" />
|
{% elsif site.social_preview_image %}
|
||||||
' %} {% assign new_meta_clip = og_image | append: twitter_image %} {% assign
|
{%- capture img_url -%}
|
||||||
seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %} {% endif %} {{
|
{% include img-url.html src=site.social_preview_image absolute=true %}
|
||||||
seo_tags }}
|
{%- endcapture -%}
|
||||||
|
|
||||||
|
{%- capture og_image -%}
|
||||||
|
<meta property="og:image" content="{{ img_url }}" />
|
||||||
|
{%- endcapture -%}
|
||||||
|
|
||||||
|
{%- capture twitter_image -%}
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta property="twitter:image" content="{{ img_url }}" />
|
||||||
|
{%- endcapture -%}
|
||||||
|
|
||||||
|
{% assign old_meta_clip = '<meta name="twitter:card" content="summary" />' %}
|
||||||
|
{% assign new_meta_clip = og_image | append: twitter_image %}
|
||||||
|
{% assign seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ seo_tags }}
|
||||||
|
|
||||||
<title>
|
<title>
|
||||||
{%- unless page.layout == 'home' -%} {{ page.title | append: ' | ' }} {%-
|
{%- unless page.layout == 'home' -%}
|
||||||
endunless -%} {{ site.title }}
|
{{ page.title | append: ' | ' }}
|
||||||
|
{%- endunless -%}
|
||||||
|
{{ site.title }}
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
{% include_cached favicons.html %}
|
{% include_cached favicons.html %}
|
||||||
|
|
||||||
<!-- Resource Hints -->
|
{% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
|
||||||
{% unless site.assets.self_host.enabled %} {% for hint in
|
<link href="{{ site.data.origin[type].webfonts | relative_url }}" rel="stylesheet">
|
||||||
site.data.origin.cors.resource_hints %} {% for link in hint.links %} <link
|
|
||||||
rel="{{ link.rel }}" href="{{ hint.url }}" {{ link.opts | join: ' ' }}> {%
|
{% else %}
|
||||||
endfor %} {% endfor %} {% endunless %}
|
{% for cdn in site.data.origin[type].cdns %}
|
||||||
|
<link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
|
||||||
|
<link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="{{ site.data.origin[type].webfonts | relative_url }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- GA -->
|
||||||
|
{% if jekyll.environment == 'production' and site.google_analytics.id != empty and site.google_analytics.id %}
|
||||||
|
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
|
||||||
|
<link rel="dns-prefetch" href="https://www.google-analytics.com">
|
||||||
|
|
||||||
|
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous">
|
||||||
|
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<!-- Bootstrap -->
|
<!-- Bootstrap -->
|
||||||
{% unless jekyll.environment == 'production' %}
|
<link rel="stylesheet" href="{{ site.data.origin[type].bootstrap.css | relative_url }}">
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"
|
|
||||||
/>
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<!-- Font Logos -->
|
<!-- Font Logos -->
|
||||||
<link
|
<link rel="stylesheet" href="{{ site.data.origin[type].fontlogos.css | relative_url }}" >
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].fontlogos.css | relative_url }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Font Awesome Icons -->
|
<!-- Font Awesome -->
|
||||||
<link
|
<link rel="stylesheet" href="{{ site.data.origin[type].fontawesome.css | relative_url }}">
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].fontawesome.css | relative_url }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Fork Awesome [added by asandikci] -->
|
<!-- Fork Awesome -->
|
||||||
<link
|
<link rel="stylesheet" href="{{ site.data.origin[type].forkawesome.css | relative_url }}" integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous">
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].forkawesome.css | relative_url }}"
|
|
||||||
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
|
|
||||||
crossorigin="anonymous"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Balloon CSS [added by asandikci] -->
|
<!-- Balloon CSS -->
|
||||||
<link
|
<link rel="stylesheet" href="{{ site.data.origin[type].ballooncss.css | relative_url }}">
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].ballooncss.css | relative_url }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Theme style -->
|
<link rel="stylesheet" href="{{ '/assets/css/:THEME.css' | replace: ':THEME', site.theme | relative_url }}">
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ '/assets/css/:THEME.css' | replace: ':THEME', site.theme | relative_url }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- Web Font -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].webfonts | relative_url }}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
{% if site.toc and page.toc %}
|
{% if site.toc and page.toc %}
|
||||||
<link
|
<link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
|
||||||
rel="stylesheet"
|
{% endif %}
|
||||||
href="{{ site.data.origin[type].toc.css | relative_url }}"
|
|
||||||
/>
|
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
||||||
{% endif %} {% if page.layout == 'post' or page.layout == 'page' or
|
<link rel="stylesheet" href="{{ site.data.origin[type]['lazy-polyfill'].css | relative_url }}">
|
||||||
page.layout == 'home' %}
|
{% endif %}
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
{% if page.layout == 'page' or page.layout == 'post' %}
|
||||||
href="{{ site.data.origin[type]['lazy-polyfill'].css | relative_url }}"
|
<!-- Manific Popup -->
|
||||||
/>
|
<link rel="stylesheet" href="{{ site.data.origin[type].magnific-popup.css | relative_url }}">
|
||||||
{% endif %} {% if page.layout == 'page' or page.layout == 'post' %}
|
|
||||||
<!-- Image Popup -->
|
|
||||||
<link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="{{ site.data.origin[type].glightbox.css | relative_url }}"
|
|
||||||
/>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- JavaScript -->
|
<!-- JavaScript -->
|
||||||
|
|
||||||
{% unless site.theme_mode %} {% include mode-toggle.html %} {% endunless %} {%
|
{% unless site.theme_mode %}
|
||||||
include metadata-hook.html %}
|
{% include mode-toggle.html %}
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
{% include metadata-hook.html %}
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -1,25 +1,25 @@
|
||||||
{%- comment -%}
|
{%- comment -%}
|
||||||
Generate media resource final URL based on `site.cdn`, `page.media_subpath`
|
Generate image final URL based on `site.img_cdn`, `page.img_path`
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
src - required, basic media resources path
|
src - required, basic image path
|
||||||
subpath - optional, relative path of media resources
|
img_path - optional, relative path of image
|
||||||
absolute - optional, boolean, if true, generate absolute URL
|
absolute - optional, boolean, if true, generate absolute URL
|
||||||
|
|
||||||
Return:
|
Return:
|
||||||
media resources URL
|
image URL
|
||||||
{%- endcomment -%}
|
{%- endcomment -%}
|
||||||
|
|
||||||
{% assign url = include.src %}
|
{% assign url = include.src %}
|
||||||
|
|
||||||
{%- if url -%}
|
{%- if url -%}
|
||||||
{% unless url contains ':' %}
|
{% unless url contains ':' %}
|
||||||
{%- comment -%} Add media resources subpath prefix {%- endcomment -%}
|
{%- comment -%} Add page image path prefix {%- endcomment -%}
|
||||||
{% assign url = include.subpath | default: '' | append: '/' | append: url %}
|
{% assign url = include.img_path | default: '' | append: '/' | append: url %}
|
||||||
|
|
||||||
{%- comment -%} Prepend CND URL {%- endcomment -%}
|
{%- comment -%} Prepend CND URL {%- endcomment -%}
|
||||||
{% if site.cdn %}
|
{% if site.img_cdn %}
|
||||||
{% assign url = site.cdn | append: '/' | append: url %}
|
{% assign url = site.img_cdn | append: '/' | append: url %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% assign url = url | replace: '///', '/' | replace: '//', '/' | replace: ':/', '://' %}
|
{% assign url = url | replace: '///', '/' | replace: '//', '/' | replace: ':/', '://' %}
|
|
@ -3,10 +3,17 @@
|
||||||
<!-- commons -->
|
<!-- commons -->
|
||||||
<script src="/assets/js/user/copy.js"></script>
|
<script src="/assets/js/user/copy.js"></script>
|
||||||
|
|
||||||
{% assign urls = site.data.origin[type].search.js %}
|
{% assign urls = site.data.origin[type].jquery.js
|
||||||
|
| append: ','
|
||||||
|
| append: site.data.origin[type].bootstrap.js
|
||||||
|
| append: ','
|
||||||
|
| append: site.data.origin[type].search.js
|
||||||
|
%}
|
||||||
|
|
||||||
<!-- layout specified -->
|
<!-- layout specified -->
|
||||||
|
|
||||||
|
{% assign js_dist = '/assets/js/dist/' %}
|
||||||
|
|
||||||
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
||||||
{% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %}
|
{% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %}
|
||||||
|
|
||||||
|
@ -14,7 +21,7 @@
|
||||||
<!-- image lazy-loading & popup & clipboard -->
|
<!-- image lazy-loading & popup & clipboard -->
|
||||||
{% assign urls = urls
|
{% assign urls = urls
|
||||||
| append: ','
|
| append: ','
|
||||||
| append: site.data.origin[type].glightbox.js
|
| append: site.data.origin[type]['magnific-popup'].js
|
||||||
| append: ','
|
| append: ','
|
||||||
| append: site.data.origin[type].clipboard.js
|
| append: site.data.origin[type].clipboard.js
|
||||||
%}
|
%}
|
||||||
|
@ -27,7 +34,7 @@
|
||||||
or page.layout == 'category'
|
or page.layout == 'category'
|
||||||
or page.layout == 'tag'
|
or page.layout == 'tag'
|
||||||
%}
|
%}
|
||||||
{% assign locale = include.lang | split: '-' | first %}
|
{% assign locale = site.lang | split: '-' | first %}
|
||||||
|
|
||||||
{% assign urls = urls
|
{% assign urls = urls
|
||||||
| append: ','
|
| append: ','
|
||||||
|
@ -61,50 +68,47 @@
|
||||||
{% assign js = 'commons' %}
|
{% assign js = 'commons' %}
|
||||||
{% endcase %}
|
{% endcase %}
|
||||||
|
|
||||||
{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
|
{% capture script %}{{ js_dist }}{{ js }}.min.js{% endcapture %}
|
||||||
|
<script defer src="{{ script | relative_url }}"></script>
|
||||||
<script src="{{ script | relative_url }}"></script>
|
|
||||||
|
|
||||||
{% if page.math %}
|
{% if page.math %}
|
||||||
<!-- MathJax -->
|
<!-- MathJax -->
|
||||||
<script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
|
<script>
|
||||||
|
/* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
|
||||||
|
MathJax = {
|
||||||
|
tex: {
|
||||||
|
/* start/end delimiter pairs for in-line math */
|
||||||
|
inlineMath: [
|
||||||
|
['$', '$'],
|
||||||
|
['\\(', '\\)']
|
||||||
|
],
|
||||||
|
/* start/end delimiter pairs for display math */
|
||||||
|
displayMath: [
|
||||||
|
['$$', '$$'],
|
||||||
|
['\\[', '\\]']
|
||||||
|
],
|
||||||
|
/* equation numbering */
|
||||||
|
tags: 'ams'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
<script 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 %}
|
||||||
|
|
||||||
<!-- Pageviews -->
|
|
||||||
{% if page.layout == 'post' %}
|
|
||||||
{% assign provider = site.pageviews.provider %}
|
|
||||||
|
|
||||||
{% if provider and provider != empty %}
|
|
||||||
{% case provider %}
|
|
||||||
{% when 'goatcounter' %}
|
|
||||||
{% if site.analytics[provider].id != empty and site.analytics[provider].id %}
|
|
||||||
{% include pageviews/{{ provider }}.html %}
|
|
||||||
{% endif %}
|
|
||||||
{% endcase %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.mermaid %}
|
|
||||||
{% include mermaid.html %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if jekyll.environment == 'production' %}
|
{% if jekyll.environment == 'production' %}
|
||||||
<!-- PWA -->
|
<!-- PWA -->
|
||||||
{% if site.pwa.enabled %}
|
{% if site.pwa.enabled %}
|
||||||
<script
|
<script defer src="{{ 'app.min.js' | prepend: js_dist | relative_url }}"></script>
|
||||||
defer
|
|
||||||
src="{{ 'app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}®ister={{ site.pwa.cache.enabled }}"
|
|
||||||
></script>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Web Analytics -->
|
<!-- GA -->
|
||||||
{% for analytics in site.analytics %}
|
{% if site.google_analytics.id != empty and site.google_analytics.id %}
|
||||||
{% capture str %}{{ analytics }}{% endcapture %}
|
{% include google-analytics.html %}
|
||||||
{% assign type = str | split: '{' | first %}
|
{% endif %}
|
||||||
{% if site.analytics[type].id and site.analytics[type].id != empty %}
|
|
||||||
{% include analytics/{{ type }}.html %}
|
<!-- GoatCounter -->
|
||||||
{% endif %}
|
{% if site.goatcounter.id != empty and site.goatcounter.id %}
|
||||||
{% endfor %}
|
{% include goatcounter.html %}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{% comment %}
|
{% comment %}
|
||||||
Detect appearance language and return it through variable "lang"
|
Detect appearance language and return it through variable "lang"
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
{% if site.data.locales[page.lang] %}
|
{% if site.data.locales[site.lang] %}
|
||||||
{% assign lang = page.lang %}
|
|
||||||
{% elsif site.data.locales[site.lang] %}
|
|
||||||
{% assign lang = site.lang %}
|
{% assign lang = site.lang %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% assign lang = 'en' %}
|
{% assign lang = 'en' %}
|
||||||
|
|
|
@ -1,33 +1,29 @@
|
||||||
<!-- mermaid-js loader -->
|
<!-- mermaid-js loader -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function updateMermaid(event) {
|
|
||||||
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
|
||||||
const mode = event.data.message;
|
|
||||||
|
|
||||||
if (typeof mermaid === 'undefined') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
|
|
||||||
let config = { theme: expectedTheme };
|
|
||||||
|
|
||||||
{%- comment -%}
|
|
||||||
Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344>
|
|
||||||
{%- endcomment -%}
|
|
||||||
const mermaidList = document.getElementsByClassName('mermaid');
|
|
||||||
|
|
||||||
[...mermaidList].forEach((elem) => {
|
|
||||||
const svgCode = elem.previousSibling.children.item(0).innerHTML;
|
|
||||||
elem.innerHTML = svgCode;
|
|
||||||
elem.removeAttribute('data-processed');
|
|
||||||
});
|
|
||||||
|
|
||||||
mermaid.initialize(config);
|
|
||||||
mermaid.init(undefined, '.mermaid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
|
function updateMermaid(event) {
|
||||||
|
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
||||||
|
const mode = event.data.message;
|
||||||
|
|
||||||
|
if (typeof mermaid === 'undefined') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
|
||||||
|
let config = { theme: expectedTheme };
|
||||||
|
|
||||||
|
/* Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
|
||||||
|
$('.mermaid').each(function () {
|
||||||
|
let svgCode = $(this).prev().children().html();
|
||||||
|
$(this).removeAttr('data-processed');
|
||||||
|
$(this).html(svgCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
mermaid.initialize(config);
|
||||||
|
mermaid.init(undefined, '.mermaid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let initTheme = 'default';
|
let initTheme = 'default';
|
||||||
const html = document.documentElement;
|
const html = document.documentElement;
|
||||||
|
|
||||||
|
@ -39,16 +35,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let mermaidConf = {
|
let mermaidConf = {
|
||||||
theme: initTheme {%- comment -%} <default | dark | forest | neutral> {%- endcomment -%}
|
theme: initTheme /* <default|dark|forest|neutral> */
|
||||||
};
|
};
|
||||||
|
|
||||||
{%- comment -%} Create mermaid tag {%- endcomment -%}
|
/* Create mermaid tag */
|
||||||
const basicList = document.getElementsByClassName('language-mermaid');
|
document.querySelectorAll('pre>code.language-mermaid').forEach((elem) => {
|
||||||
[...basicList].forEach((elem) => {
|
|
||||||
const svgCode = elem.textContent;
|
const svgCode = elem.textContent;
|
||||||
const backup = elem.parentElement;
|
const backup = elem.parentElement;
|
||||||
backup.classList.add('d-none');
|
backup.classList.add('unloaded');
|
||||||
{%- comment -%} create mermaid node {%- endcomment -%}
|
/* create mermaid node */
|
||||||
let mermaid = document.createElement('pre');
|
let mermaid = document.createElement('pre');
|
||||||
mermaid.classList.add('mermaid');
|
mermaid.classList.add('mermaid');
|
||||||
const text = document.createTextNode(svgCode);
|
const text = document.createTextNode(svgCode);
|
||||||
|
@ -57,6 +52,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
mermaid.initialize(mermaidConf);
|
mermaid.initialize(mermaidConf);
|
||||||
|
|
||||||
window.addEventListener('message', updateMermaid);
|
window.addEventListener('message', updateMermaid);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -19,32 +19,45 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
if (this.hasMode) {
|
||||||
|
if (this.isDarkMode) {
|
||||||
|
if (!this.isSysDarkPrefer) {
|
||||||
|
this.setDark();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this.isSysDarkPrefer) {
|
||||||
|
this.setLight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let self = this;
|
let self = this;
|
||||||
|
|
||||||
{%- comment -%} always follow the system prefers {%- endcomment -%}
|
/* always follow the system prefers */
|
||||||
this.sysDarkPrefers.addEventListener('change', () => {
|
this.sysDarkPrefers.addEventListener('change', () => {
|
||||||
if (self.hasMode) {
|
if (self.hasMode) {
|
||||||
|
if (self.isDarkMode) {
|
||||||
|
if (!self.isSysDarkPrefer) {
|
||||||
|
self.setDark();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (self.isSysDarkPrefer) {
|
||||||
|
self.setLight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.clearMode();
|
self.clearMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.notify();
|
self.notify();
|
||||||
});
|
});
|
||||||
|
} /* constructor() */
|
||||||
if (!this.hasMode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isDarkMode) {
|
|
||||||
this.setDark();
|
|
||||||
} else {
|
|
||||||
this.setLight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
get sysDarkPrefers() {
|
get sysDarkPrefers() {
|
||||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||||
}
|
}
|
||||||
|
|
||||||
get isPreferDark() {
|
get isSysDarkPrefer() {
|
||||||
return this.sysDarkPrefers.matches;
|
return this.sysDarkPrefers.matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +65,10 @@
|
||||||
return this.mode === ModeToggle.DARK_MODE;
|
return this.mode === ModeToggle.DARK_MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isLightMode() {
|
||||||
|
return this.mode === ModeToggle.LIGHT_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
get hasMode() {
|
get hasMode() {
|
||||||
return this.mode != null;
|
return this.mode != null;
|
||||||
}
|
}
|
||||||
|
@ -60,12 +77,12 @@
|
||||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
{%- comment -%} get the current mode on screen {%- endcomment -%}
|
/* get the current mode on screen */
|
||||||
get modeStatus() {
|
get modeStatus() {
|
||||||
if (this.hasMode) {
|
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||||
return this.mode;
|
return ModeToggle.DARK_MODE;
|
||||||
} else {
|
} else {
|
||||||
return this.isPreferDark ? ModeToggle.DARK_MODE : ModeToggle.LIGHT_MODE;
|
return ModeToggle.LIGHT_MODE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,9 +101,7 @@
|
||||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
{%- comment -%}
|
/* Notify another plugins that the theme mode has changed */
|
||||||
Notify another plugins that the theme mode has changed
|
|
||||||
{%- endcomment -%}
|
|
||||||
notify() {
|
notify() {
|
||||||
window.postMessage(
|
window.postMessage(
|
||||||
{
|
{
|
||||||
|
@ -99,9 +114,21 @@
|
||||||
|
|
||||||
flipMode() {
|
flipMode() {
|
||||||
if (this.hasMode) {
|
if (this.hasMode) {
|
||||||
this.clearMode();
|
if (this.isSysDarkPrefer) {
|
||||||
|
if (this.isLightMode) {
|
||||||
|
this.clearMode();
|
||||||
|
} else {
|
||||||
|
this.setLight();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this.isDarkMode) {
|
||||||
|
this.clearMode();
|
||||||
|
} else {
|
||||||
|
this.setDark();
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.isPreferDark) {
|
if (this.isSysDarkPrefer) {
|
||||||
this.setLight();
|
this.setLight();
|
||||||
} else {
|
} else {
|
||||||
this.setDark();
|
this.setDark();
|
||||||
|
@ -109,8 +136,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.notify();
|
this.notify();
|
||||||
}
|
} /* flipMode() */
|
||||||
}
|
} /* ModeToggle */
|
||||||
|
|
||||||
const modeToggle = new ModeToggle();
|
const modeToggle = new ModeToggle();
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
<!-- Display GoatCounter pageviews -->
|
|
||||||
<script>
|
|
||||||
let pv = document.getElementById('pageviews');
|
|
||||||
|
|
||||||
if (pv !== null) {
|
|
||||||
const uri = location.pathname.replace(/\/$/, '');
|
|
||||||
const url = `https://{{ site.analytics.goatcounter.id }}.goatcounter.com/counter/${encodeURIComponent(uri)}.json`;
|
|
||||||
|
|
||||||
fetch(url)
|
|
||||||
.then((response) => response.json())
|
|
||||||
.then((data) => {
|
|
||||||
const count = data.count.replace(/\s/g, '');
|
|
||||||
pv.innerText = new Intl.NumberFormat().format(count);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
pv.innerText = '1';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,16 +0,0 @@
|
||||||
{%- 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 -}}
|
|
|
@ -97,7 +97,7 @@
|
||||||
{% assign _lazyload = true %}
|
{% assign _lazyload = true %}
|
||||||
|
|
||||||
{%- capture _img_url -%}
|
{%- capture _img_url -%}
|
||||||
{% include media-url.html src=_src subpath=page.media_subpath %}
|
{% include img-url.html src=_src img_path=page.img_path %}
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
|
|
||||||
{% assign _path_prefix = _img_url | remove: _src %}
|
{% assign _path_prefix = _img_url | remove: _src %}
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
{% assign match_posts = match_posts | push: site.tags[tag] | uniq %}
|
{% assign match_posts = match_posts | push: site.tags[tag] | uniq %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% assign match_posts = match_posts | reverse %}
|
|
||||||
{% assign last_index = match_posts.size | minus: 1 %}
|
{% assign last_index = match_posts.size | minus: 1 %}
|
||||||
{% assign score_list = '' | split: '' %}
|
{% assign score_list = '' | split: '' %}
|
||||||
|
|
||||||
|
@ -82,7 +81,10 @@
|
||||||
{% 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-description.html %}</p>
|
<p>
|
||||||
|
{% include no-linenos.html content=post.content %}
|
||||||
|
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
|
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
{%- comment -%} Note: dependent library will be loaded in `js-selector.html` {%- endcomment -%}
|
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||||
SimpleJekyllSearch({
|
SimpleJekyllSearch({
|
||||||
searchInput: document.getElementById('search-input'),
|
searchInput: document.getElementById('search-input'),
|
||||||
resultsContainer: document.getElementById('search-results'),
|
resultsContainer: document.getElementById('search-results'),
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- The Search results -->
|
<!-- The Search results -->
|
||||||
|
|
||||||
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
|
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||||
<div class="col-11 content">
|
<div class="col-11 content">
|
||||||
<div id="search-hints">
|
<div id="search-hints">
|
||||||
{% include_cached trending-tags.html %}
|
{% include_cached trending-tags.html %}
|
||||||
|
|
|
@ -5,13 +5,15 @@
|
||||||
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
|
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
|
||||||
{%- if site.avatar != empty and site.avatar -%}
|
{%- if site.avatar != empty and site.avatar -%}
|
||||||
{%- capture avatar_url -%}
|
{%- capture avatar_url -%}
|
||||||
{% include media-url.html src=site.avatar %}
|
{% include img-url.html src=site.avatar %}
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
<img src="{{- avatar_url -}}" width="112" height="112" alt="avatar" onerror="this.style.display='none'">
|
<img src="{{- avatar_url -}}" width="112" height="112" alt="avatar" onerror="this.style.display='none'">
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="site-title d-block" href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
<h1 class="site-title">
|
||||||
|
<a href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
||||||
|
</h1>
|
||||||
<p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
|
<p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
|
||||||
</header>
|
</header>
|
||||||
<!-- .profile-wrapper -->
|
<!-- .profile-wrapper -->
|
||||||
|
@ -42,7 +44,7 @@
|
||||||
|
|
||||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||||
{% unless site.theme_mode %}
|
{% unless site.theme_mode %}
|
||||||
<button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle">
|
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||||
<i class="fas fa-adjust"></i>
|
<i class="fas fa-adjust"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
{% comment %}
|
|
||||||
Determine TOC state and return it through variable "enable_toc"
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
{% assign enable_toc = false %}
|
|
||||||
{% if site.toc and page.toc %}
|
|
||||||
{% if page.content contains '<h2' or page.content contains '<h3' %}
|
|
||||||
{% assign enable_toc = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
|
@ -1,8 +1,13 @@
|
||||||
{% include toc-status.html %}
|
{% assign enable_toc = false %}
|
||||||
|
{% if site.toc and page.toc %}
|
||||||
|
{% if page.content contains '<h2' or page.content contains '<h3' %}
|
||||||
|
{% assign enable_toc = true %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if enable_toc %}
|
{% if enable_toc %}
|
||||||
<section id="toc-wrapper" class="ps-0 pe-4">
|
<section id="toc-wrapper" class="ps-0 pe-4">
|
||||||
<h2 class="panel-heading ps-3 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
<h2 class="panel-heading ps-3 pt-2 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
||||||
<nav id="toc"></nav>
|
<nav id="toc"></nav>
|
||||||
</section>
|
</section>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
<i class="fas fa-search fa-fw"></i>
|
<i class="fas fa-search fa-fw"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<search id="search" class="align-items-center ms-3 ms-lg-0">
|
<search class="align-items-center ms-3 ms-lg-0">
|
||||||
<i class="fas fa-search fa-fw"></i>
|
<i class="fas fa-search fa-fw"></i>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class="form-control"
|
||||||
|
|
1
_javascript/_copyright
Normal file
1
_javascript/_copyright
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Chirpy v<%= pkg.version %> | © 2019 <%= pkg.author %> | <%= pkg.license %> Licensed | <%= pkg.homepage %>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue