diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..39c428d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,29 @@ +{ + "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" + ] + } + } +} diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100644 index 0000000..a4bc282 --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,18 @@ +#!/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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BACKUP_37702.yml b/.github/DISCUSSION_TEMPLATE/general_BACKUP_37702.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BACKUP_37702.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BACKUP_38091.yml b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38091.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38091.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BACKUP_38288.yml b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38288.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38288.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BACKUP_38466.yml b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38466.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38466.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BACKUP_38614.yml b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38614.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BACKUP_38614.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BASE_37702.yml b/.github/DISCUSSION_TEMPLATE/general_BASE_37702.yml new file mode 100644 index 0000000..4e879f9 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BASE_37702.yml @@ -0,0 +1,26 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BASE_38091.yml b/.github/DISCUSSION_TEMPLATE/general_BASE_38091.yml new file mode 100644 index 0000000..4e879f9 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BASE_38091.yml @@ -0,0 +1,26 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BASE_38288.yml b/.github/DISCUSSION_TEMPLATE/general_BASE_38288.yml new file mode 100644 index 0000000..4e879f9 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BASE_38288.yml @@ -0,0 +1,26 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BASE_38466.yml b/.github/DISCUSSION_TEMPLATE/general_BASE_38466.yml new file mode 100644 index 0000000..4e879f9 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BASE_38466.yml @@ -0,0 +1,26 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_BASE_38614.yml b/.github/DISCUSSION_TEMPLATE/general_BASE_38614.yml new file mode 100644 index 0000000..4e879f9 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_BASE_38614.yml @@ -0,0 +1,26 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_LOCAL_37702.yml b/.github/DISCUSSION_TEMPLATE/general_LOCAL_37702.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/DISCUSSION_TEMPLATE/general_LOCAL_38091.yml b/.github/DISCUSSION_TEMPLATE/general_LOCAL_38091.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/DISCUSSION_TEMPLATE/general_LOCAL_38288.yml b/.github/DISCUSSION_TEMPLATE/general_LOCAL_38288.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/DISCUSSION_TEMPLATE/general_LOCAL_38466.yml b/.github/DISCUSSION_TEMPLATE/general_LOCAL_38466.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/DISCUSSION_TEMPLATE/general_LOCAL_38614.yml b/.github/DISCUSSION_TEMPLATE/general_LOCAL_38614.yml new file mode 100644 index 0000000..e69de29 diff --git a/.github/DISCUSSION_TEMPLATE/general_REMOTE_37702.yml b/.github/DISCUSSION_TEMPLATE/general_REMOTE_37702.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_REMOTE_37702.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_REMOTE_38091.yml b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38091.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38091.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_REMOTE_38288.yml b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38288.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38288.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_REMOTE_38466.yml b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38466.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38466.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/general_REMOTE_38614.yml b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38614.yml new file mode 100644 index 0000000..18d0f85 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general_REMOTE_38614.yml @@ -0,0 +1,17 @@ +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 diff --git a/.github/DISCUSSION_TEMPLATE/ideas.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml new file mode 100644 index 0000000..e4c987d --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/ideas.yml @@ -0,0 +1,7 @@ +body: + - type: textarea + attributes: + label: Description + description: Please describe in detail what you want to share. + validations: + required: true diff --git a/.github/workflows/pr-filter.yml b/.github/workflows/pr-filter.yml new file mode 100644 index 0000000..8e9a18b --- /dev/null +++ b/.github/workflows/pr-filter.yml @@ -0,0 +1,25 @@ +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 }); diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..b0f9713 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,23 @@ +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 }}"}}' diff --git a/.github/workflows/scripts/pr-filter.js b/.github/workflows/scripts/pr-filter.js new file mode 100644 index 0000000..03f50dc --- /dev/null +++ b/.github/workflows/scripts/pr-filter.js @@ -0,0 +1,36 @@ +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(//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.'); + } +}; diff --git a/.gitignore b/.gitignore index 859686b..a5e9948 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ Gemfile.lock # Jekyll cache .jekyll-cache +.jekyll-metadata _site # RubyGems @@ -16,5 +17,10 @@ package-lock.json # IDE configurations .idea +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +!.vscode/tasks.json # Misc +_sass/dist diff --git a/.gitignore.orig b/.gitignore.orig new file mode 100644 index 0000000..cc49483 --- /dev/null +++ b/.gitignore.orig @@ -0,0 +1,30 @@ +# 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 diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100755 new mode 100644 index 7f23494..0a4b97d --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -npx --no -- commitlint --edit ${1} +npx --no -- commitlint --edit $1 diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..831991e --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,8 @@ +{ + "commands-show-output": false, + "blanks-around-fences": false, + "line-length": false, + "no-inline-html": { + "allowed_elements": ["kbd", "sub"] + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 6927cd1..082bc94 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,12 +1,3 @@ { - "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" - ] + "recommendations": ["ms-vscode-remote.remote-containers"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 4fcded4..5e8a04f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,23 +2,29 @@ // Prettier "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, - "prettier.trailingComma": "none", // Shopify Liquid "files.associations": { "*.html": "liquid" }, + "[markdown]": { + "editor.defaultFormatter": "yzhang.markdown-all-in-one" + }, // Formatter "[html][liquid]": { "editor.defaultFormatter": "Shopify.theme-check-vscode" }, "[shellscript]": { - "editor.defaultFormatter": "foxundermoon.shell-format" + "editor.defaultFormatter": "mkhl.shfmt" }, // Disable vscode built-in stylelint "css.validate": false, "scss.validate": false, "less.validate": false, // Stylint extension settings - "stylelint.snippet": ["css", "less", "postcss", "scss"], - "stylelint.validate": ["css", "less", "postcss", "scss"] + "stylelint.snippet": ["css", "scss"], + "stylelint.validate": ["css", "scss"], + // Run tasks in macOS + "terminal.integrated.profiles.osx": { + "zsh": { "path": "/bin/zsh", "args": ["-l", "-i"] } + } } diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..99ed5c5 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,64 @@ +{ + "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." + } + ] +} diff --git a/Gemfile b/Gemfile index 043b28e..e541574 100644 --- a/Gemfile +++ b/Gemfile @@ -4,20 +4,11 @@ source "https://rubygems.org" gemspec -group :test do - gem "html-proofer", "~> 4.4" -end +gem "html-proofer", "~> 5.0", group: :test -# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem -# and associated library. platforms :mingw, :x64_mingw, :mswin, :jruby do gem "tzinfo", ">= 1", "< 3" gem "tzinfo-data" end -# 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] +gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] diff --git a/README.md b/README.md index 0e074cf..7e57b2a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ +
+ # Chirpy Jekyll Theme A minimal, responsive, and feature-rich Jekyll theme for technical writing. - [![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?color=brightgreen)][gem]  - [![CI](https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml/badge.svg?branch=master&event=push)][ci]  - [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4e556876a3c54d5e8f2d2857c4f43894)][codacy]  - [![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy.svg)][license]  - [![996.icu](https://img.shields.io/badge/link-996.icu-%23FF4D5B.svg)](https://996.icu) + [![CI](https://img.shields.io/github/actions/workflow/status/cotes2020/jekyll-theme-chirpy/ci.yml?logo=github)][ci]  + [![Codacy Badge](https://img.shields.io/codacy/grade/4e556876a3c54d5e8f2d2857c4f43894?logo=codacy)][codacy]  + [![GitHub license](https://img.shields.io/github/license/cotes2020/jekyll-theme-chirpy?color=goldenrod)][license]  + [![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy?&logo=RubyGems&logoColor=ghostwhite&label=gem&color=orange)][gem]  + [![Open in Dev Containers](https://img.shields.io/badge/Dev_Containers-Open-deepskyblue?logo=linuxcontainers)][open-container] [**Live Demo** →][demo] @@ -18,7 +20,7 @@ ## Features -- Dark / Light Theme Mode +- Dark Theme - Localized UI language - Pinned Posts on Home Page - Hierarchical Categories @@ -28,13 +30,13 @@ - Syntax Highlighting - Mathematical Expressions - Mermaid Diagrams & Flowcharts -- Dark / Light Mode Images -- Embed Videos -- Disqus / Giscus / Utterances Comments +- Dark Mode Images +- Embed Media +- Comment Systems - Built-in Search - Atom Feeds - PWA -- Google Analytics / GoatCounter +- Web Analytics - SEO & Performance Optimization ## Documentation @@ -54,7 +56,7 @@ For details, see the "[Contributing Guidelines][contribute-guide]". 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] - —— Made with [contrib.rocks](https://contrib.rocks) + — Made with [contrib.rocks](https://contrib.rocks) ### Third-Party Assets @@ -70,6 +72,7 @@ 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 [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 +[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/ [clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/ [demo]: https://cotes2020.github.io/chirpy-demo/ diff --git a/_config.yml b/_config.yml index 1acf77e..c2186bf 100644 --- a/_config.yml +++ b/_config.yml @@ -1,13 +1,13 @@ # The Site Configuration theme: jekyll-theme-chirpy 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 -title: Aliberk Sandıkçı +title: Aliberk Sandıkçı tagline: Personal Website & Blog -description: >- +description: >- Personal Website & Blog of Aliberk Sandıkçı url: "https://asandikci.com" @@ -15,18 +15,28 @@ baseurl: "/" forgejo: username: asandikci - domain: 'git.aliberksandikci.com.tr' + domain: "git.asandikci.com" + +github: + username: asandikci social: name: Aliberk Sandıkçı email: contact@aliberksandikci.com.tr links: - - https://git.aliberksandikci.com.tr/asandikci + - https://git.asandikci.com/asandikci + - https://github.com/asandikci - https://mastodon.social/@asandikci - https://www.linkedin.com/in/asandikci 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 avatar: https://asandikci.com/assets/img/pp.png @@ -38,8 +48,9 @@ social_preview_image: # string, local or CORS resources toc: true comments: - active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable - # The active options are as follows: + # Global switch for the post-comment system. Keeping it empty means disabled. + provider: # [disqus | utterances | giscus] + # The provider options are as follows: disqus: shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname # utterances settings › https://utteranc.es/ @@ -53,6 +64,7 @@ comments: category: category_id: mapping: # optional, default to 'pathname' + strict: # optional, default to '0' input_position: # optional, default to 'bottom' lang: # optional, default to the value of `site.lang` reactions_enabled: # optional, default to the value of `1` @@ -66,9 +78,9 @@ assets: env: # [development | production] pwa: - enabled: true # the option for PWA feature (installable) + enabled: true # The option for PWA feature (installable) 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. # Usually its value is the `baseurl` of another website that # shares the same domain name as the current website. @@ -80,6 +92,7 @@ paginate: 10 # ------------ The following options are not recommended to be modified ------------------ kramdown: + footnote_backlink: "↩︎" syntax_highlighter: rouge syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options css_class: highlight @@ -116,10 +129,6 @@ defaults: values: layout: page permalink: /:title/ - - scope: - path: assets/js/dist - values: - swcache: true sass: style: compressed @@ -140,7 +149,7 @@ exclude: - tools - README.md - LICENSE - - rollup.config.js + - "*.config.js" - package*.json jekyll-archives: diff --git a/_data/contact.yml b/_data/contact.yml index 317906f..7e28f1a 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -34,4 +34,16 @@ - type: rss icon: "fas fa-rss" - noblank: true \ No newline at end of file + 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 \ No newline at end of file diff --git a/_data/contact.yml.orig b/_data/contact.yml.orig new file mode 100644 index 0000000..de876aa --- /dev/null +++ b/_data/contact.yml.orig @@ -0,0 +1,66 @@ +# 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 +# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification +# +# - type: linkedin +# icon: 'fab fa-linkedin' # icons powered by +# 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 diff --git a/_data/locales/ar.yml b/_data/locales/ar.yml index c608298..a79e020 100644 --- a/_data/locales/ar.yml +++ b/_data/locales/ar.yml @@ -43,7 +43,7 @@ copyright: meta: باستخدام :PLATFORM السمة :THEME not_found: - statment: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة. + statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة. notification: update_found: يتوفر اصدار جديد للمحتوى. diff --git a/_data/locales/bg-BG.yml b/_data/locales/bg-BG.yml index 3e04993..3fb060f 100644 --- a/_data/locales/bg-BG.yml +++ b/_data/locales/bg-BG.yml @@ -43,7 +43,7 @@ copyright: meta: Създадено чрез :PLATFORM и :THEME тема not_found: - statment: Съжалявам, но на този URL адрес няма налично съдържание. + statement: Съжалявам, но на този URL адрес няма налично съдържание. notification: update_found: Налична е нова версия на съдържанието. diff --git a/_data/locales/cs-CZ.yml b/_data/locales/cs-CZ.yml index e515c08..cf93f61 100644 --- a/_data/locales/cs-CZ.yml +++ b/_data/locales/cs-CZ.yml @@ -43,7 +43,7 @@ copyright: meta: Použití :PLATFORM s motivem :THEME not_found: - statment: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje. + statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje. notification: update_found: Je k dispozici nová verze obsahu. diff --git a/_data/locales/de-DE.yml b/_data/locales/de-DE.yml index 6b187b4..6c9d91d 100644 --- a/_data/locales/de-DE.yml +++ b/_data/locales/de-DE.yml @@ -42,7 +42,7 @@ copyright: meta: Powered by :PLATFORM with :THEME theme not_found: - statment: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource. + statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource. notification: update_found: Eine neue Version ist verfügbar. @@ -76,7 +76,7 @@ df: post: strftime: "%d.%m.%Y" dayjs: "DD.MM.YYYY" - + # categories page categories: category_measure: diff --git a/_data/locales/el-GR.yml b/_data/locales/el-GR.yml index ab5fb0e..b6d2a86 100644 --- a/_data/locales/el-GR.yml +++ b/_data/locales/el-GR.yml @@ -43,7 +43,7 @@ copyright: meta: Αξιοποιώντας την :PLATFORM theme :THEME not_found: - statment: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει. + statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει. notification: update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου. diff --git a/_data/locales/en.yml b/_data/locales/en.yml index 0dbe713..152d090 100644 --- a/_data/locales/en.yml +++ b/_data/locales/en.yml @@ -43,7 +43,7 @@ copyright: meta: Using the :THEME theme for :PLATFORM. not_found: - statment: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. + statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. notification: update_found: A new version of content is available. diff --git a/_data/locales/es-ES.yml b/_data/locales/es-ES.yml index 5529230..8f8d149 100644 --- a/_data/locales/es-ES.yml +++ b/_data/locales/es-ES.yml @@ -43,7 +43,7 @@ copyright: meta: Hecho con :PLATFORM usando el tema :THEME not_found: - statment: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe. + statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe. notification: update_found: Hay una nueva versión de contenido disponible. diff --git a/_data/locales/fi-FI.yml b/_data/locales/fi-FI.yml index c817d2b..60c9862 100644 --- a/_data/locales/fi-FI.yml +++ b/_data/locales/fi-FI.yml @@ -42,7 +42,7 @@ copyright: meta: Käytetään :PLATFORM iä Teema :THEME not_found: - statment: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä. + statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä. notification: update_found: Uusi versio sisällöstä on saatavilla. diff --git a/_data/locales/fr-FR.yml b/_data/locales/fr-FR.yml index 72b034d..dce83c9 100644 --- a/_data/locales/fr-FR.yml +++ b/_data/locales/fr-FR.yml @@ -14,7 +14,7 @@ tabs: categories: Catégories tags: Tags archives: Archives - about: A propos de + about: À propos # the text displayed in the search bar & search results search: @@ -32,18 +32,18 @@ copyright: license: template: Cet article est sous licence :LICENSE_NAME par l'auteur. name: CC BY 4.0 - link: https://creativecommons.org/licenses/by/4.0/ + link: https://creativecommons.org/licenses/by/4.0/deed.fr # Displayed in the footer brief: Certains droits réservés. verbose: >- - Sauf mention contraire, les articles de ce site sont publiés sous licence + Sauf mention contraire, les articles de ce site sont publiés 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 not_found: - statment: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas. + statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas. notification: update_found: Une nouvelle version du contenu est disponible. diff --git a/_data/locales/hu-HU.yml b/_data/locales/hu-HU.yml index b09f2cd..be3a31b 100644 --- a/_data/locales/hu-HU.yml +++ b/_data/locales/hu-HU.yml @@ -14,24 +14,23 @@ tabs: categories: Kategóriák tags: Címkék archives: Archívum - about: Rólam + about: Bemutatkozás # the text displayed in the search bar & search results search: hint: keresés cancel: Mégse - no_results: Oops! Nincs találat a keresésre. + no_results: Hoppá! Nincs találat a keresésre. panel: lastmod: Legutóbb frissítve trending_tags: Népszerű Címkék toc: Tartalom - links: Blog linkek copyright: # Shown at the bottom of the post license: - template: A bejegyzés :LICENSE_NAME licenccel rendelkezik. + template: A bejegyzést a szerző :LICENSE_NAME licenc alatt engedélyezte. name: CC BY 4.0 link: https://creativecommons.org/licenses/by/4.0/ @@ -42,10 +41,10 @@ copyright: Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek, hacsak másképp nincs jelezve. -meta: Készítve :PLATFORM motorral :THEME témával +meta: Készítve :THEME témával a :PLATFORM platformra. not_found: - statment: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat. + statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat. notification: update_found: Elérhető a tartalom új verziója. @@ -73,7 +72,21 @@ post: title: Link másolása succeed: Link sikeresen másolva! +# Date time format. +# See: , +df: + post: + strftime: "%Y. %B. %e." + dayjs: "YYYY. MMMM D." + archives: + strftime: "%B" + dayjs: "MMM" + # categories page categories: - category_measure: kategória - post_measure: bejegyzés + category_measure: + singular: kategória + plural: kategória + post_measure: + singular: bejegyzés + plural: bejegyzés diff --git a/_data/locales/id-ID.yml b/_data/locales/id-ID.yml index 29ad156..d772ec3 100644 --- a/_data/locales/id-ID.yml +++ b/_data/locales/id-ID.yml @@ -43,7 +43,7 @@ copyright: meta: Didukung oleh :PLATFORM dengan tema :THEME not_found: - statment: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada. + statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada. notification: update_found: Versi konten baru tersedia. diff --git a/_data/locales/it-IT.yml b/_data/locales/it-IT.yml index cf7b691..c8dfb44 100644 --- a/_data/locales/it-IT.yml +++ b/_data/locales/it-IT.yml @@ -42,7 +42,7 @@ copyright: meta: Servizio offerto da :PLATFORM con tema :THEME not_found: - statment: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente. + statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente. notification: update_found: Nuova versione del contenuto disponibile. diff --git a/_data/locales/ko-KR.yml b/_data/locales/ko-KR.yml index 4dd221b..8297634 100644 --- a/_data/locales/ko-KR.yml +++ b/_data/locales/ko-KR.yml @@ -43,7 +43,7 @@ copyright: meta: Powered by :PLATFORM with :THEME theme not_found: - statment: 해당 URL은 존재하지 않습니다. + statement: 해당 URL은 존재하지 않습니다. notification: update_found: 새 버전의 콘텐츠를 사용할 수 있습니다. diff --git a/_data/locales/my-MM.yml b/_data/locales/my-MM.yml index 98848d5..d5bf728 100644 --- a/_data/locales/my-MM.yml +++ b/_data/locales/my-MM.yml @@ -43,7 +43,7 @@ copyright: meta: Powered by :PLATFORM with :THEME theme not_found: - statment: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။ + statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။ notification: update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။ diff --git a/_data/locales/pt-BR.yml b/_data/locales/pt-BR.yml index 4cef833..7ca60a7 100644 --- a/_data/locales/pt-BR.yml +++ b/_data/locales/pt-BR.yml @@ -43,7 +43,7 @@ copyright: meta: Feito com :PLATFORM usando o tema :THEME not_found: - statment: Desculpe, a página não foi encontrada. + statement: Desculpe, a página não foi encontrada. notification: update_found: Uma nova versão do conteúdo está disponível. diff --git a/_data/locales/ru-RU.yml b/_data/locales/ru-RU.yml index 185407c..868ba95 100644 --- a/_data/locales/ru-RU.yml +++ b/_data/locales/ru-RU.yml @@ -42,7 +42,7 @@ copyright: meta: Использует тему :THEME для :PLATFORM not_found: - statment: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее. + statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее. notification: update_found: Доступна новая версия контента. @@ -76,7 +76,7 @@ df: post: strftime: "%d.%m.%Y" dayjs: "DD.MM.YYYY" - + # categories page categories: category_measure: diff --git a/_data/locales/sl-SI.yml b/_data/locales/sl-SI.yml index 7ab18b1..4d9434d 100644 --- a/_data/locales/sl-SI.yml +++ b/_data/locales/sl-SI.yml @@ -43,7 +43,7 @@ copyright: meta: Uporabljena :PLATFORM tema :THEME #Using the :PLATFORM theme :THEME not_found: - 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. + 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. notification: update_found: Novejša različica vsebine je na voljo. #A new version of content is available. diff --git a/_data/locales/sv-SE.yml b/_data/locales/sv-SE.yml index 7ec2ee2..decb59c 100644 --- a/_data/locales/sv-SE.yml +++ b/_data/locales/sv-SE.yml @@ -43,7 +43,7 @@ copyright: meta: Byggd med :PLATFORM och temat :THEME not_found: - statment: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns. + statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns. notification: update_found: Det finns en ny version av innehållet. diff --git a/_data/locales/th.yml b/_data/locales/th.yml index 22cb00a..a3f41a0 100644 --- a/_data/locales/th.yml +++ b/_data/locales/th.yml @@ -43,7 +43,7 @@ copyright: meta: กำลังใช้ธีมของ :PLATFORM ชื่อ :THEME not_found: - statment: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่ + statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่ notification: update_found: มีเวอร์ชันใหม่ของเนื้อหา diff --git a/_data/locales/tr-TR.yml b/_data/locales/tr-TR.yml index 50d8110..768f57c 100644 --- a/_data/locales/tr-TR.yml +++ b/_data/locales/tr-TR.yml @@ -43,7 +43,7 @@ copyright: meta: :PLATFORM ve :THEME teması not_found: - statment: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor. + statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor. notification: update_found: İçeriğin yeni bir sürümü mevcut. diff --git a/_data/locales/uk-UA.yml b/_data/locales/uk-UA.yml index b605073..8fef52e 100644 --- a/_data/locales/uk-UA.yml +++ b/_data/locales/uk-UA.yml @@ -43,7 +43,7 @@ copyright: meta: Powered by :PLATFORM with :THEME theme not_found: - statment: Вибачте, це посилання вказує на ресурс, що не існує. + statement: Вибачте, це посилання вказує на ресурс, що не існує. notification: update_found: Доступна нова версія вмісту. diff --git a/_data/locales/vi-VN.yml b/_data/locales/vi-VN.yml index 617431a..6c2ceff 100644 --- a/_data/locales/vi-VN.yml +++ b/_data/locales/vi-VN.yml @@ -42,7 +42,7 @@ copyright: meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME not_found: - 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. + 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. notification: update_found: Đã có phiên bản mới của nội dung. diff --git a/_data/locales/zh-CN.yml b/_data/locales/zh-CN.yml index f828134..5c13410 100644 --- a/_data/locales/zh-CN.yml +++ b/_data/locales/zh-CN.yml @@ -42,7 +42,7 @@ copyright: meta: 本站采用 :PLATFORM 主题 :THEME not_found: - statment: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。 + statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。 notification: update_found: 发现新版本的内容。 diff --git a/_data/locales/zh-TW.yml b/_data/locales/zh-TW.yml index 911253b..33a4330 100644 --- a/_data/locales/zh-TW.yml +++ b/_data/locales/zh-TW.yml @@ -42,7 +42,7 @@ copyright: meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題 not_found: - statment: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。 + statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。 notification: update_found: 發現新版本更新。 diff --git a/_data/media.yml b/_data/media.yml new file mode 100644 index 0000000..9cd69b4 --- /dev/null +++ b/_data/media.yml @@ -0,0 +1,18 @@ +- 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 diff --git a/_data/origin/basic.yml b/_data/origin/basic.yml index ed99ea8..2d52982 100644 --- a/_data/origin/basic.yml +++ b/_data/origin/basic.yml @@ -4,13 +4,6 @@ webfonts: /assets/lib/fonts/main.css # 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: css: /assets/lib/tocbot/tocbot.min.css js: /assets/lib/tocbot/tocbot.min.js @@ -27,13 +20,13 @@ mermaid: dayjs: js: common: /assets/lib/dayjs/dayjs.min.js - locale: /assets/lib/dayjs/locale/en.min.js - relativeTime: /assets/lib/dayjs/plugin/relativeTime.min.js - localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.min.js + locale: /assets/lib/dayjs/locale/en.js + relativeTime: /assets/lib/dayjs/plugin/relativeTime.js + localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.js -magnific-popup: - css: /assets/lib/magnific-popup/magnific-popup.css - js: /assets/lib/magnific-popup/jquery.magnific-popup.min.js +glightbox: + css: /assets/lib/glightbox/glightbox.min.css + js: /assets/lib/glightbox/glightbox.min.js lazy-polyfill: css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css diff --git a/_data/origin/cors.yml b/_data/origin/cors.yml index c319411..1526b06 100644 --- a/_data/origin/cors.yml +++ b/_data/origin/cors.yml @@ -1,32 +1,27 @@ -# CDNs - -cdns: - # Google Fonts +# Resource Hints +resource_hints: - url: https://fonts.googleapis.com + links: + - rel: preconnect + - rel: dns-prefetch - url: https://fonts.gstatic.com - args: crossorigin - - url: https://fonts.googleapis.com - # jsDelivr CDN + links: + - rel: preconnect + opts: [crossorigin] + - rel: dns-prefetch - url: https://cdn.jsdelivr.net - # polyfill.io for math (cdnjs.cloudflare.com/polyfill) - - url: https://cdnjs.cloudflare.com + links: + - rel: preconnect + - rel: dns-prefetch -# fonts - -webfonts: https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap +# Web Fonts +webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap # 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: - css: https://cdn.jsdelivr.net/npm/tocbot@4.25.0/dist/tocbot.min.css - js: https://cdn.jsdelivr.net/npm/tocbot@4.25.0/dist/tocbot.min.js + css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css + js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js fontlogos: css: https://cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css @@ -35,7 +30,7 @@ forkawesome: css: https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css fontawesome: - css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.5.2/css/all.min.css + css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css ballooncss: css: https://unpkg.com/balloon-css/balloon.min.css @@ -44,18 +39,18 @@ search: js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js mermaid: - js: https://cdn.jsdelivr.net/npm/mermaid@10.8.0/dist/mermaid.min.js + js: https://cdn.jsdelivr.net/npm/mermaid@11.0.2/dist/mermaid.min.js dayjs: js: - common: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js - locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/locale/:LOCALE.min.js - relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/plugin/relativeTime.min.js - localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/plugin/localizedFormat.min.js + common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js + locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js + relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js + localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js -magnific-popup: - css: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css - js: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js +glightbox: + css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css + js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js lazy-polyfill: css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css diff --git a/_data/share.yml b/_data/share.yml index ee73bec..4abe81b 100644 --- a/_data/share.yml +++ b/_data/share.yml @@ -1,5 +1,4 @@ platforms: - - type: Linkedin icon: "fab fa-linkedin" link: "https://www.linkedin.com/sharing/share-offsite/?url=URL" @@ -15,7 +14,7 @@ platforms: - label: fosstodon.org link: "https://fosstodon.org/" - label: mastodon.com.tr - link: "https://mastodon.com.tr/" + link: "https://mastodon.com.tr/" - type: Twitter icon: "fa-brands fa-square-x-twitter" @@ -28,3 +27,50 @@ platforms: - type: Telegram icon: "fab fa-telegram" 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" diff --git a/_includes/analytics/cloudflare.html b/_includes/analytics/cloudflare.html new file mode 100644 index 0000000..1eeb1a9 --- /dev/null +++ b/_includes/analytics/cloudflare.html @@ -0,0 +1,7 @@ + + + diff --git a/_includes/analytics/fathom.html b/_includes/analytics/fathom.html new file mode 100644 index 0000000..4b603d3 --- /dev/null +++ b/_includes/analytics/fathom.html @@ -0,0 +1,7 @@ + + + diff --git a/_includes/analytics/goatcounter.html b/_includes/analytics/goatcounter.html new file mode 100644 index 0000000..3867fdb --- /dev/null +++ b/_includes/analytics/goatcounter.html @@ -0,0 +1,6 @@ + + diff --git a/_includes/analytics/google.html b/_includes/analytics/google.html new file mode 100644 index 0000000..d0aac65 --- /dev/null +++ b/_includes/analytics/google.html @@ -0,0 +1,13 @@ + + + diff --git a/_includes/analytics/matomo.html b/_includes/analytics/matomo.html new file mode 100644 index 0000000..72b2c46 --- /dev/null +++ b/_includes/analytics/matomo.html @@ -0,0 +1,14 @@ + + + diff --git a/_includes/analytics/umami.html b/_includes/analytics/umami.html new file mode 100644 index 0000000..bfcb1d0 --- /dev/null +++ b/_includes/analytics/umami.html @@ -0,0 +1,6 @@ + + diff --git a/_includes/comments.html b/_includes/comments.html index 39e521f..fef135f 100644 --- a/_includes/comments.html +++ b/_includes/comments.html @@ -1,5 +1,5 @@ - -{% if page.comments and site.comments.active %} - {% capture path %}comments/{{ site.comments.active }}.html{% endcapture %} + +{% if page.comments and site.comments.provider %} + {% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %} {% include {{ path }} %} {% endif %} diff --git a/_includes/comments/disqus.html b/_includes/comments/disqus.html index e59ed37..2b889a4 100644 --- a/_includes/comments/disqus.html +++ b/_includes/comments/disqus.html @@ -10,7 +10,7 @@ this.page.identifier = '{{ page.url }}'; }; - /* Lazy loading */ + {%- comment -%} Lazy loading {%- endcomment -%} var disqus_observer = new IntersectionObserver( function (entries) { if (entries[0].isIntersecting) { @@ -28,12 +28,12 @@ { threshold: [0] } ); - disqus_observer.observe(document.querySelector('#disqus_thread')); + disqus_observer.observe(document.getElementById('disqus_thread')); - /* Auto switch theme */ + {%- comment -%} Auto switch theme {%- endcomment -%} function reloadDisqus() { if (event.source === window && event.data && event.data.direction === ModeToggle.ID) { - /* Disqus hasn't been loaded */ + {%- comment -%} Disqus hasn't been loaded {%- endcomment -%} if (typeof DISQUS === 'undefined') { return; } @@ -44,7 +44,7 @@ } } - if (document.querySelector('.mode-toggle')) { + if (document.getElementById('mode-toggle')) { window.addEventListener('message', reloadDisqus); } diff --git a/_includes/comments/giscus.html b/_includes/comments/giscus.html index 8f04246..f9becfe 100644 --- a/_includes/comments/giscus.html +++ b/_includes/comments/giscus.html @@ -2,7 +2,6 @@ - diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html deleted file mode 100644 index e5e5119..0000000 --- a/_includes/google-analytics.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/_includes/head.html b/_includes/head.html index 3d743cd..833b3fa 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,120 +1,128 @@ - - - - - + + + + + + /> - {%- capture seo_tags -%} - {% seo title=false %} - {%- endcapture -%} + {%- capture seo_tags -%} {% seo title=false %} {%- endcapture -%} - {% if page.image %} - {% assign src = page.image.path | default: page.image %} - - {% unless src contains '://' %} - {%- capture img_url -%} - {% include img-url.html src=src img_path=page.img_path absolute=true %} - {%- endcapture -%} - - {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%} - {%- capture new_url -%}{{ img_url }}{%- endcapture -%} - - {% assign seo_tags = seo_tags | replace: old_url, new_url %} - {% endunless %} - - {% elsif site.social_preview_image %} - {%- capture img_url -%} - {% include img-url.html src=site.social_preview_image absolute=true %} - {%- endcapture -%} - - {%- capture og_image -%} - - {%- endcapture -%} - - {%- capture twitter_image -%} - - - {%- endcapture -%} - - {% assign old_meta_clip = '' %} - {% assign new_meta_clip = og_image | append: twitter_image %} - {% assign seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %} - {% endif %} - - {{ seo_tags }} + {% if page.image %} {% assign src = page.image.path | default: page.image %} + {% unless src contains '://' %} {%- capture img_url -%} {% include + media-url.html src=src subpath=page.media_subpath absolute=true %} {%- + endcapture -%} {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture + -%} {%- capture new_url -%}{{ img_url }}{%- endcapture -%} {% assign seo_tags + = seo_tags | replace: old_url, new_url %} {% endunless %} {% elsif + site.social_preview_image %} {%- capture img_url -%} {% include media-url.html + src=site.social_preview_image absolute=true %} {%- endcapture -%} {%- capture + og_image -%} + + {%- endcapture -%} {%- capture twitter_image -%} + + + {%- endcapture -%} {% assign old_meta_clip = ' + + ' %} {% assign new_meta_clip = og_image | append: twitter_image %} {% assign + seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %} {% endif %} {{ + seo_tags }} - {%- unless page.layout == 'home' -%} - {{ page.title | append: ' | ' }} - {%- endunless -%} - {{ site.title }} + {%- unless page.layout == 'home' -%} {{ page.title | append: ' | ' }} {%- + endunless -%} {{ site.title }} {% include_cached favicons.html %} - {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %} - - - {% else %} - {% for cdn in site.data.origin[type].cdns %} - - - {% endfor %} - - - {% endif %} - - - {% if jekyll.environment == 'production' and site.google_analytics.id != empty and site.google_analytics.id %} - - - - - - {% endif %} + + {% unless site.assets.self_host.enabled %} {% for hint in + site.data.origin.cors.resource_hints %} {% for link in hint.links %} {% + endfor %} {% endfor %} {% endunless %} - + {% unless jekyll.environment == 'production' %} + + {% endunless %} - + - - + + - - + + - - + + - + + + + + {% if site.toc and page.toc %} - - {% endif %} - - {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %} - - {% endif %} - - {% if page.layout == 'page' or page.layout == 'post' %} - - + + {% endif %} {% if page.layout == 'post' or page.layout == 'page' or + page.layout == 'home' %} + + {% endif %} {% if page.layout == 'page' or page.layout == 'post' %} + + {% endif %} - {% unless site.theme_mode %} - {% include mode-toggle.html %} - {% endunless %} - - {% include metadata-hook.html %} + {% unless site.theme_mode %} {% include mode-toggle.html %} {% endunless %} {% + include metadata-hook.html %} diff --git a/_includes/js-selector.html b/_includes/js-selector.html index 22eee81..931deb5 100644 --- a/_includes/js-selector.html +++ b/_includes/js-selector.html @@ -3,17 +3,10 @@ -{% assign urls = site.data.origin[type].jquery.js - | append: ',' - | append: site.data.origin[type].bootstrap.js - | append: ',' - | append: site.data.origin[type].search.js -%} +{% assign urls = site.data.origin[type].search.js %} -{% assign js_dist = '/assets/js/dist/' %} - {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %} {% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %} @@ -21,7 +14,7 @@ {% assign urls = urls | append: ',' - | append: site.data.origin[type]['magnific-popup'].js + | append: site.data.origin[type].glightbox.js | append: ',' | append: site.data.origin[type].clipboard.js %} @@ -34,7 +27,7 @@ or page.layout == 'category' or page.layout == 'tag' %} - {% assign locale = site.lang | split: '-' | first %} + {% assign locale = include.lang | split: '-' | first %} {% assign urls = urls | append: ',' @@ -68,47 +61,50 @@ {% assign js = 'commons' %} {% endcase %} -{% capture script %}{{ js_dist }}{{ js }}.min.js{% endcapture %} - +{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %} + + {% if page.math %} - + {% endif %} + +{% 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 site.pwa.enabled %} - + {% endif %} - - {% if site.google_analytics.id != empty and site.google_analytics.id %} - {% include google-analytics.html %} - {% endif %} - - - {% if site.goatcounter.id != empty and site.goatcounter.id %} - {% include goatcounter.html %} - {% endif %} + + {% for analytics in site.analytics %} + {% capture str %}{{ analytics }}{% endcapture %} + {% assign type = str | split: '{' | first %} + {% if site.analytics[type].id and site.analytics[type].id != empty %} + {% include analytics/{{ type }}.html %} + {% endif %} + {% endfor %} {% endif %} diff --git a/_includes/lang.html b/_includes/lang.html index 19558a0..34b50df 100644 --- a/_includes/lang.html +++ b/_includes/lang.html @@ -1,7 +1,9 @@ {% comment %} Detect appearance language and return it through variable "lang" {% endcomment %} -{% if site.data.locales[site.lang] %} +{% if site.data.locales[page.lang] %} + {% assign lang = page.lang %} +{% elsif site.data.locales[site.lang] %} {% assign lang = site.lang %} {% else %} {% assign lang = 'en' %} diff --git a/_includes/img-url.html b/_includes/media-url.html similarity index 59% rename from _includes/img-url.html rename to _includes/media-url.html index bb4758c..ea41075 100644 --- a/_includes/img-url.html +++ b/_includes/media-url.html @@ -1,25 +1,25 @@ {%- comment -%} - Generate image final URL based on `site.img_cdn`, `page.img_path` + Generate media resource final URL based on `site.cdn`, `page.media_subpath` Arguments: - src - required, basic image path - img_path - optional, relative path of image + src - required, basic media resources path + subpath - optional, relative path of media resources absolute - optional, boolean, if true, generate absolute URL Return: - image URL + media resources URL {%- endcomment -%} {% assign url = include.src %} {%- if url -%} {% unless url contains ':' %} - {%- comment -%} Add page image path prefix {%- endcomment -%} - {% assign url = include.img_path | default: '' | append: '/' | append: url %} + {%- comment -%} Add media resources subpath prefix {%- endcomment -%} + {% assign url = include.subpath | default: '' | append: '/' | append: url %} {%- comment -%} Prepend CND URL {%- endcomment -%} - {% if site.img_cdn %} - {% assign url = site.img_cdn | append: '/' | append: url %} + {% if site.cdn %} + {% assign url = site.cdn | append: '/' | append: url %} {% endif %} {% assign url = url | replace: '///', '/' | replace: '//', '/' | replace: ':/', '://' %} diff --git a/_includes/mermaid.html b/_includes/mermaid.html index 967cfb4..a3a83ed 100644 --- a/_includes/mermaid.html +++ b/_includes/mermaid.html @@ -1,29 +1,33 @@ diff --git a/_includes/mode-toggle.html b/_includes/mode-toggle.html index a347750..113ec37 100644 --- a/_includes/mode-toggle.html +++ b/_includes/mode-toggle.html @@ -19,45 +19,32 @@ } constructor() { - if (this.hasMode) { - if (this.isDarkMode) { - if (!this.isSysDarkPrefer) { - this.setDark(); - } - } else { - if (this.isSysDarkPrefer) { - this.setLight(); - } - } - } - let self = this; - /* always follow the system prefers */ + {%- comment -%} always follow the system prefers {%- endcomment -%} this.sysDarkPrefers.addEventListener('change', () => { if (self.hasMode) { - if (self.isDarkMode) { - if (!self.isSysDarkPrefer) { - self.setDark(); - } - } else { - if (self.isSysDarkPrefer) { - self.setLight(); - } - } - self.clearMode(); } - self.notify(); }); - } /* constructor() */ + + if (!this.hasMode) { + return; + } + + if (this.isDarkMode) { + this.setDark(); + } else { + this.setLight(); + } + } get sysDarkPrefers() { return window.matchMedia('(prefers-color-scheme: dark)'); } - get isSysDarkPrefer() { + get isPreferDark() { return this.sysDarkPrefers.matches; } @@ -65,10 +52,6 @@ return this.mode === ModeToggle.DARK_MODE; } - get isLightMode() { - return this.mode === ModeToggle.LIGHT_MODE; - } - get hasMode() { return this.mode != null; } @@ -77,12 +60,12 @@ return sessionStorage.getItem(ModeToggle.MODE_KEY); } - /* get the current mode on screen */ + {%- comment -%} get the current mode on screen {%- endcomment -%} get modeStatus() { - if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) { - return ModeToggle.DARK_MODE; + if (this.hasMode) { + return this.mode; } else { - return ModeToggle.LIGHT_MODE; + return this.isPreferDark ? ModeToggle.DARK_MODE : ModeToggle.LIGHT_MODE; } } @@ -101,7 +84,9 @@ sessionStorage.removeItem(ModeToggle.MODE_KEY); } - /* Notify another plugins that the theme mode has changed */ + {%- comment -%} + Notify another plugins that the theme mode has changed + {%- endcomment -%} notify() { window.postMessage( { @@ -114,21 +99,9 @@ flipMode() { if (this.hasMode) { - if (this.isSysDarkPrefer) { - if (this.isLightMode) { - this.clearMode(); - } else { - this.setLight(); - } - } else { - if (this.isDarkMode) { - this.clearMode(); - } else { - this.setDark(); - } - } + this.clearMode(); } else { - if (this.isSysDarkPrefer) { + if (this.isPreferDark) { this.setLight(); } else { this.setDark(); @@ -136,8 +109,8 @@ } this.notify(); - } /* flipMode() */ - } /* ModeToggle */ + } + } const modeToggle = new ModeToggle(); diff --git a/_includes/pageviews/goatcounter.html b/_includes/pageviews/goatcounter.html new file mode 100644 index 0000000..e62fd69 --- /dev/null +++ b/_includes/pageviews/goatcounter.html @@ -0,0 +1,19 @@ + + diff --git a/_includes/post-description.html b/_includes/post-description.html new file mode 100644 index 0000000..6c40036 --- /dev/null +++ b/_includes/post-description.html @@ -0,0 +1,16 @@ +{%- comment -%} + Get post description or generate it from the post content. +{%- endcomment -%} + +{%- assign max_length = include.max_length | default: 200 -%} + +{%- capture description -%} +{%- if post.description -%} + {{- post.description -}} +{%- else -%} + {%- include no-linenos.html content=post.content -%} + {{- content | markdownify | strip_html -}} +{%- endif -%} +{%- endcapture -%} + +{{- description | strip | truncate: max_length | escape -}} diff --git a/_includes/refactor-content.html b/_includes/refactor-content.html index e4abcbc..8d298cd 100644 --- a/_includes/refactor-content.html +++ b/_includes/refactor-content.html @@ -97,7 +97,7 @@ {% assign _lazyload = true %} {%- capture _img_url -%} - {% include img-url.html src=_src img_path=page.img_path %} + {% include media-url.html src=_src subpath=page.media_subpath %} {%- endcapture -%} {% assign _path_prefix = _img_url | remove: _src %} diff --git a/_includes/related-posts.html b/_includes/related-posts.html index 1ba2f32..37a295b 100644 --- a/_includes/related-posts.html +++ b/_includes/related-posts.html @@ -21,6 +21,7 @@ {% assign match_posts = match_posts | push: site.tags[tag] | uniq %} {% endfor %} +{% assign match_posts = match_posts | reverse %} {% assign last_index = match_posts.size | minus: 1 %} {% assign score_list = '' | split: '' %} @@ -81,10 +82,7 @@ {% include datetime.html date=post.date lang=include.lang %}

{{ post.title }}

-

- {% include no-linenos.html content=post.content %} - {{ content | markdownify | strip_html | truncate: 200 | escape }} -

+

{% include post-description.html %}

diff --git a/_includes/search-loader.html b/_includes/search-loader.html index be3ca8a..2582580 100644 --- a/_includes/search-loader.html +++ b/_includes/search-loader.html @@ -19,7 +19,7 @@ {% capture not_found %}

{{ site.data.locales[include.lang].search.no_results }}

{% endcapture %}