Merge branch 'master' into production
This commit is contained in:
commit
fa8a2a0ada
56 changed files with 857 additions and 738 deletions
26
.github/DISCUSSION_TEMPLATE/general.yml
vendored
Normal file
26
.github/DISCUSSION_TEMPLATE/general.yml
vendored
Normal file
|
@ -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
|
40
.github/DISCUSSION_TEMPLATE/q-a.yml
vendored
Normal file
40
.github/DISCUSSION_TEMPLATE/q-a.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
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
|
||||||
|
id: download
|
||||||
|
attributes:
|
||||||
|
label: How did you create the site?
|
||||||
|
options:
|
||||||
|
- Generated from `chirpy-starter`
|
||||||
|
- Built from `jekyll-theme-chirpy`
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Please describe your need in detail.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Operations you have already tried
|
||||||
|
description: Describe the effort you went through.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Or logs? Anything that will give us more context about the issue you are encountering!
|
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -1,61 +0,0 @@
|
||||||
---
|
|
||||||
name: Bug Report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
---
|
|
||||||
|
|
||||||
> **Tips**: Remember, contributions to this repository should follow the [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
|
|
||||||
## Describe the bug
|
|
||||||
|
|
||||||
<!-- A clear and concise description of what the bug is. -->
|
|
||||||
|
|
||||||
## To Reproduce
|
|
||||||
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
<!--
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Expected behavior
|
|
||||||
|
|
||||||
<!-- A clear and concise description of what you expected to happen. -->
|
|
||||||
|
|
||||||
## Logs/Screenshots
|
|
||||||
|
|
||||||
<!-- If applicable, add logs/screenshots to help explain your problem. -->
|
|
||||||
|
|
||||||
## Environment
|
|
||||||
|
|
||||||
| Command | Version |
|
|
||||||
|-----------------------------------|---------|
|
|
||||||
| `ruby -v` | |
|
|
||||||
| `gem -v` | |
|
|
||||||
| `bundle -v` | |
|
|
||||||
| `bundle exec jekyll -v` | |
|
|
||||||
| `bundle info jekyll-theme-chirpy` | |
|
|
||||||
|
|
||||||
<!-- If necessary, uncomment and fill in the following list:
|
|
||||||
|
|
||||||
### Desktop
|
|
||||||
|
|
||||||
- OS: [e.g. macOS 10.15.6]
|
|
||||||
- Browser: [e.g. Chrome 85.0.4183.83 (64-bit)]
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- If necessary, uncomment and fill in the following list:
|
|
||||||
|
|
||||||
### Smartphone
|
|
||||||
|
|
||||||
- Device: [e.g. iPhone 6]
|
|
||||||
- OS: [e.g. iOS 13.6.1]
|
|
||||||
- Browser: [e.g. Chrome 22]
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Additional context
|
|
||||||
|
|
||||||
<!-- Add any other context about the problem here. -->
|
|
64
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
64
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
name: Bug Report
|
||||||
|
description: Create a report to help us improve
|
||||||
|
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
|
||||||
|
id: download
|
||||||
|
attributes:
|
||||||
|
label: How did you create the site?
|
||||||
|
options:
|
||||||
|
- Generated from `chirpy-starter`
|
||||||
|
- Built from `jekyll-theme-chirpy`
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe the bug
|
||||||
|
description: A clear and concise description of what the bug is.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Steps To Reproduce
|
||||||
|
description: Steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. In this environment...
|
||||||
|
2. With this config...
|
||||||
|
3. Run '...'
|
||||||
|
4. See error...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: A concise description of what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Environment
|
||||||
|
value: |
|
||||||
|
- Ruby: <!-- run `ruby -v` -->
|
||||||
|
- Jekyll: <!-- run `bundle exec jekyll -v` -->
|
||||||
|
- Chirpy: <!-- run `bundle info jekyll-theme-chirpy` -->
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Anything else?
|
||||||
|
description: |
|
||||||
|
Links? References? Or logs? Anything that will give us more context about the issue you are encountering!
|
26
.github/ISSUE_TEMPLATE/feature_request.md
vendored
26
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
@ -1,26 +0,0 @@
|
||||||
---
|
|
||||||
name: Feature Request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
labels: enhancement
|
|
||||||
---
|
|
||||||
|
|
||||||
> **Tips**: Remember, contributions to this repository should follow the [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md).
|
|
||||||
|
|
||||||
## Is your feature request related to a problem? Please describe
|
|
||||||
|
|
||||||
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
|
|
||||||
|
|
||||||
|
|
||||||
## Describe the solution you'd like
|
|
||||||
|
|
||||||
<!-- A clear and concise description of what you want to happen. -->
|
|
||||||
|
|
||||||
|
|
||||||
## Describe alternatives you've considered
|
|
||||||
|
|
||||||
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
|
||||||
|
|
||||||
|
|
||||||
## Additional context
|
|
||||||
|
|
||||||
<!-- Add any other context or screenshots about the feature request here. -->
|
|
38
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
38
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
name: Feature Request
|
||||||
|
description: Suggest an idea for this project
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
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: Is your feature request related to a problem? Please describe
|
||||||
|
description: A clear and concise description of what the problem is.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe the solution you'd like
|
||||||
|
description: A clear and concise description of what you want to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Describe alternatives you've considered
|
||||||
|
description: A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Add any other context or screenshots about the feature request here.
|
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,29 +1,17 @@
|
||||||
## Description
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Type of change
|
## Type of change
|
||||||
|
<!-- Please select the desired item checkbox and change it from `[ ]` to `[x]` and then delete the irrelevant options. -->
|
||||||
<!--
|
|
||||||
Please select the desired item checkbox and change it to "[x]", then delete options that are not relevant.
|
|
||||||
-->
|
|
||||||
- [ ] Bug fix (non-breaking change which fixes an issue)
|
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||||
- [ ] New feature (non-breaking change which adds functionality)
|
- [ ] New feature (non-breaking change which adds functionality)
|
||||||
- [ ] Improvement (refactoring and improving code)
|
- [ ] Improvement (refactoring and improving code)
|
||||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||||
- [ ] Documentation update
|
- [ ] Documentation update
|
||||||
|
|
||||||
## Additional context
|
## Description
|
||||||
|
|
||||||
<!-- e.g. Fixes #(issue) -->
|
|
||||||
|
|
||||||
## How has this been tested
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
|
Please include a summary of the change and which issue is fixed.
|
||||||
|
Please also include relevant motivation and context.
|
||||||
|
List any dependencies that are required for this change.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I have run `bash ./tools/test` (at the root of the project) locally and passed
|
## Additional context
|
||||||
- [ ] I have tested this feature in the browser
|
<!-- e.g. Fixes #(issue) -->
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"scss/operator-no-newline-after": null,
|
"scss/operator-no-newline-after": null,
|
||||||
"rule-empty-line-before": [
|
"rule-empty-line-before": [
|
||||||
"always",
|
"always",
|
||||||
{ "ignore": ["after-comment", "first-nested", "inside-block"] }
|
{ "ignore": ["after-comment", "first-nested"] }
|
||||||
],
|
],
|
||||||
"value-keyword-case": ["lower", { "ignoreProperties": ["/^\\$/"] }],
|
"value-keyword-case": ["lower", { "ignoreProperties": ["/^\\$/"] }],
|
||||||
"media-feature-range-notation": "prefix"
|
"media-feature-range-notation": "prefix"
|
||||||
|
|
5
Gemfile
5
Gemfile
|
@ -21,8 +21,3 @@ 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
|
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||||
# do not have a Java counterpart.
|
# do not have a Java counterpart.
|
||||||
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||||
|
|
||||||
# Lock jekyll-sass-converter to 2.x on Linux-musl
|
|
||||||
if RUBY_PLATFORM =~ /linux-musl/
|
|
||||||
gem "jekyll-sass-converter", "~> 2.0"
|
|
||||||
end
|
|
||||||
|
|
27
README.md
27
README.md
|
@ -19,10 +19,8 @@
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>Click to expand/close details</summary>
|
||||||
<i>Click to view features</i>
|
|
||||||
</summary>
|
|
||||||
<p>
|
|
||||||
|
|
||||||
- Dark / Light Theme Mode
|
- Dark / Light Theme Mode
|
||||||
- Localized UI language
|
- Localized UI language
|
||||||
|
@ -36,28 +34,29 @@
|
||||||
- Mermaid Diagrams & Flowcharts
|
- Mermaid Diagrams & Flowcharts
|
||||||
- Dark / Light Mode Images
|
- Dark / Light Mode Images
|
||||||
- Embed Videos
|
- Embed Videos
|
||||||
- Disqus / Utterances / Giscus Comments
|
- Disqus / Giscus / Utterances Comments
|
||||||
- Built-in Search
|
- Built-in Search
|
||||||
- Atom Feeds
|
- Atom Feeds
|
||||||
- PWA
|
- PWA
|
||||||
- Google Analytics
|
- Google Analytics
|
||||||
- SEO & Performance Optimization
|
- SEO & Performance Optimization
|
||||||
|
|
||||||
</p>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
To explore usage, development, and upgrade guide of the project, please refer to the [**Wiki**][wiki].
|
To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki].
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions (Issues/PRs/Discussions) are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. For details, see the "[Contributing Guidelines][contribute-guide]".
|
Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place
|
||||||
|
to learn, inspire, and create. Any contributions you make are greatly appreciated.
|
||||||
|
For details, see the "[Contributing Guidelines][contribute-guide]".
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
This theme is mainly built with [Jekyll][jekyllrb] ecosystem,
|
This project is mainly built with [Jekyll][jekyllrb] ecosystem,
|
||||||
[Bootstrap][bootstrap], [Font Awesome][icons] and some other [wonderful tools][lib].
|
[Bootstrap][bootstrap], [Font Awesome][icons], and some other [wonderful tools][lib].
|
||||||
The avatar and favicon design come from [Clipart Max][image].
|
The avatar and favicon design come from [Clipart Max][image].
|
||||||
|
|
||||||
Many thanks to the [contributors][contributors] who participated in the development
|
Many thanks to the [contributors][contributors] who participated in the development
|
||||||
|
@ -67,15 +66,15 @@ Last but not least, thanks to [JetBrains][jetbrains] for providing the _Open Sou
|
||||||
|
|
||||||
## Sponsoring
|
## Sponsoring
|
||||||
|
|
||||||
If you'd like to sponsor this project, the following options are available.
|
If you like this project or have built something through it, please consider sponsoring it, and your support would be greatly appreciated.
|
||||||
|
|
||||||
[![Ko-fi](https://img.shields.io/badge/Support_Me_on_Ko--fi-ff5e5b?logo=ko-fi&logoColor=white)][ko-fi]
|
[![Ko-fi](https://img.shields.io/badge/Support_Me_on_Ko--fi-ff5e5b?logo=ko-fi&logoColor=white)][ko-fi]
|
||||||
[![Wechat Pay](https://img.shields.io/badge/Tip_Me_on_WeChat-brightgreen?logo=wechat&logoColor=white)][donation]
|
[![Wechat Pay](https://img.shields.io/badge/Support_Me_on_WeChat-brightgreen?logo=wechat&logoColor=white)][donation]
|
||||||
[![Alipay](https://img.shields.io/badge/Tip_Me_on_Alipay-blue?logo=alipay&logoColor=white)][donation]
|
[![Alipay](https://img.shields.io/badge/Support_Me_on_Alipay-blue?logo=alipay&logoColor=white)][donation]
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This work is published under [MIT License][license].
|
This project is published under [MIT License][license].
|
||||||
|
|
||||||
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
|
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
|
||||||
[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
|
||||||
|
|
11
_config.yml
11
_config.yml
|
@ -3,10 +3,6 @@
|
||||||
# Import the theme
|
# Import the theme
|
||||||
theme: jekyll-theme-chirpy
|
theme: jekyll-theme-chirpy
|
||||||
|
|
||||||
# Change the following value to '/PROJECT_NAME' ONLY IF your site type is GitHub Pages Project sites
|
|
||||||
# and doesn't have a custom domain.
|
|
||||||
baseurl: ""
|
|
||||||
|
|
||||||
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
|
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
|
||||||
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
|
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
|
||||||
# otherwise, the layout language will use the default value of 'en'.
|
# otherwise, the layout language will use the default value of 'en'.
|
||||||
|
@ -25,7 +21,8 @@ tagline: A text-focused Jekyll theme # it will display as the sub-title
|
||||||
description: >- # used by seo meta and the atom feed
|
description: >- # used by seo meta and the atom feed
|
||||||
A minimal, responsive and feature-rich Jekyll theme for technical writing.
|
A minimal, responsive and feature-rich Jekyll theme for technical writing.
|
||||||
|
|
||||||
# fill in the protocol & hostname for your site, e.g., 'https://username.github.io'
|
# Fill in the protocol & hostname for your site.
|
||||||
|
# e.g. 'https://username.github.io', note that it does not end with a '/'.
|
||||||
url: ""
|
url: ""
|
||||||
|
|
||||||
github:
|
github:
|
||||||
|
@ -114,6 +111,9 @@ pwa:
|
||||||
|
|
||||||
paginate: 10
|
paginate: 10
|
||||||
|
|
||||||
|
# The base URL of your site
|
||||||
|
baseurl: ""
|
||||||
|
|
||||||
# ------------ The following options are not recommended to be modified ------------------
|
# ------------ The following options are not recommended to be modified ------------------
|
||||||
|
|
||||||
kramdown:
|
kramdown:
|
||||||
|
@ -180,7 +180,6 @@ exclude:
|
||||||
- docs
|
- docs
|
||||||
- tools
|
- tools
|
||||||
- README.md
|
- README.md
|
||||||
- CHANGELOG.md
|
|
||||||
- LICENSE
|
- LICENSE
|
||||||
- rollup.config.js
|
- rollup.config.js
|
||||||
- package*.json
|
- package*.json
|
||||||
|
|
|
@ -58,7 +58,7 @@ post:
|
||||||
pageview_measure: Aufrufe
|
pageview_measure: Aufrufe
|
||||||
read_time:
|
read_time:
|
||||||
unit: Minuten
|
unit: Minuten
|
||||||
prompt: lesen
|
prompt: Lesezeit
|
||||||
relate_posts: Weiterlesen
|
relate_posts: Weiterlesen
|
||||||
share: Teilen
|
share: Teilen
|
||||||
button:
|
button:
|
||||||
|
@ -70,6 +70,13 @@ post:
|
||||||
title: Link kopieren
|
title: Link kopieren
|
||||||
succeed: Link erfolgreich kopiert!
|
succeed: Link erfolgreich kopiert!
|
||||||
|
|
||||||
|
# Date time format.
|
||||||
|
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
||||||
|
df:
|
||||||
|
post:
|
||||||
|
strftime: "%d.%m.%Y"
|
||||||
|
dayjs: "DD.MM.YYYY"
|
||||||
|
|
||||||
# categories page
|
# categories page
|
||||||
categories:
|
categories:
|
||||||
category_measure:
|
category_measure:
|
||||||
|
|
|
@ -40,7 +40,7 @@ copyright:
|
||||||
Except where otherwise noted, the blog posts on this site are licensed
|
Except where otherwise noted, the blog posts on this site are licensed
|
||||||
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
|
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
|
||||||
|
|
||||||
meta: Using the :PLATFORM theme :THEME
|
meta: Using the :THEME theme for :PLATFORM
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statment: 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.
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
# ----- Commons label -----
|
# ----- Commons label -----
|
||||||
|
|
||||||
layout:
|
layout:
|
||||||
post: Публикация
|
post: Пост
|
||||||
category: Категория
|
category: Категория
|
||||||
tag: Тег
|
tag: Тег
|
||||||
|
|
||||||
# The tabs of sidebar
|
# The tabs of sidebar
|
||||||
tabs:
|
tabs:
|
||||||
# format: <filename_without_extension>: <value>
|
# format: <filename_without_extension>: <value>
|
||||||
home: Домашняя страница
|
home: Главная
|
||||||
categories: Категории
|
categories: Категории
|
||||||
tags: Теги
|
tags: Теги
|
||||||
archives: Архив
|
archives: Архив
|
||||||
|
@ -19,8 +19,8 @@ tabs:
|
||||||
# the text displayed in the search bar & search results
|
# the text displayed in the search bar & search results
|
||||||
search:
|
search:
|
||||||
hint: поиск
|
hint: поиск
|
||||||
cancel: Отменить
|
cancel: Отмена
|
||||||
no_results: Ох! Ничего не найдено.
|
no_results: Упс! Ничего не найдено.
|
||||||
|
|
||||||
panel:
|
panel:
|
||||||
lastmod: Недавно обновлено
|
lastmod: Недавно обновлено
|
||||||
|
@ -30,48 +30,58 @@ panel:
|
||||||
copyright:
|
copyright:
|
||||||
# Shown at the bottom of the post
|
# Shown at the bottom of the post
|
||||||
license:
|
license:
|
||||||
template: Публикация защищена лицензией :LICENSE_NAME.
|
template: Авторский пост защищен лицензией :LICENSE_NAME.
|
||||||
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/
|
||||||
|
|
||||||
# Displayed in the footer
|
# Displayed in the footer
|
||||||
brief: Некоторые права защищены.
|
brief: Некоторые права защищены.
|
||||||
verbose: >-
|
verbose: >-
|
||||||
Публикации на сайте защищены лицензией Creative Commons Attribution 4.0 International (CC BY 4.0),
|
Если не указано иное, авторские посты на этом сайте защищены лицензией Creative Commons Attribution 4.0 International (CC BY 4.0).
|
||||||
если в тексте публикации не указано иное.
|
|
||||||
|
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
meta: Использует тему :THEME для :PLATFORM
|
||||||
|
|
||||||
not_found:
|
not_found:
|
||||||
statment: Извините, эта ссылка указывает на ресурс который не существует.
|
statment: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
|
||||||
|
|
||||||
notification:
|
notification:
|
||||||
update_found: Доступна новая версия контента.
|
update_found: Доступна новая версия контента.
|
||||||
update: Обновлять
|
update: Обновить
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
# ----- Posts related labels -----
|
||||||
|
|
||||||
post:
|
post:
|
||||||
written_by: Автор
|
written_by: Автор
|
||||||
posted: Время публикации
|
posted: Опубликовано
|
||||||
updated: Обновлено
|
updated: Обновлено
|
||||||
words: слов
|
words: слов
|
||||||
pageview_measure: просмотров
|
pageview_measure: просмотров
|
||||||
read_time:
|
read_time:
|
||||||
unit: минут
|
unit: мин.
|
||||||
prompt: чтения
|
prompt: чтения
|
||||||
relate_posts: Вам также может быть интересно
|
relate_posts: Похожие посты
|
||||||
share: Поделиться
|
share: Поделиться
|
||||||
button:
|
button:
|
||||||
next: Предыдущая публикация
|
next: Следующий пост
|
||||||
previous: Следующая публикация
|
previous: Предыдущий пост
|
||||||
copy_code:
|
copy_code:
|
||||||
succeed: Скопировано успешно!
|
succeed: Скопировано!
|
||||||
share_link:
|
share_link:
|
||||||
title: Скопировать ссылку
|
title: Скопировать ссылку
|
||||||
succeed: Ссылка успешно скопирована!
|
succeed: Ссылка успешно скопирована!
|
||||||
|
|
||||||
|
# Date time format.
|
||||||
|
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
||||||
|
df:
|
||||||
|
post:
|
||||||
|
strftime: "%d.%m.%Y"
|
||||||
|
dayjs: "DD.MM.YYYY"
|
||||||
|
|
||||||
# categories page
|
# categories page
|
||||||
categories:
|
categories:
|
||||||
category_measure: категории
|
category_measure:
|
||||||
post_measure: публикации
|
singular: категория
|
||||||
|
plural: категории
|
||||||
|
post_measure:
|
||||||
|
singular: пост
|
||||||
|
plural: посты
|
||||||
|
|
|
@ -35,14 +35,12 @@ magnific-popup:
|
||||||
css: /assets/lib/magnific-popup/magnific-popup.css
|
css: /assets/lib/magnific-popup/magnific-popup.css
|
||||||
js: /assets/lib/magnific-popup/jquery.magnific-popup.min.js
|
js: /assets/lib/magnific-popup/jquery.magnific-popup.min.js
|
||||||
|
|
||||||
lazysizes:
|
lazy-polyfill:
|
||||||
js: /assets/lib/lazysizes/lazysizes.min.js
|
css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css
|
||||||
|
js: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.umd.min.js
|
||||||
|
|
||||||
clipboard:
|
clipboard:
|
||||||
js: /assets/lib/clipboard/clipboard.min.js
|
js: /assets/lib/clipboard/clipboard.min.js
|
||||||
|
|
||||||
polyfill:
|
|
||||||
js: /assets/lib/polyfill-v3-es6/polyfill.min.js
|
|
||||||
|
|
||||||
mathjax:
|
mathjax:
|
||||||
js: /assets/lib/mathjax/tex-chtml.js
|
js: /assets/lib/mathjax/tex-chtml.js
|
||||||
|
|
|
@ -19,12 +19,12 @@ jquery:
|
||||||
js: https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js
|
js: https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js
|
||||||
|
|
||||||
bootstrap:
|
bootstrap:
|
||||||
css: https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css
|
css: https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css
|
||||||
js: https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js
|
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.21.1/dist/tocbot.min.css
|
css: https://cdn.jsdelivr.net/npm/tocbot@4.21.2/dist/tocbot.min.css
|
||||||
js: https://cdn.jsdelivr.net/npm/tocbot@4.21.1/dist/tocbot.min.js
|
js: https://cdn.jsdelivr.net/npm/tocbot@4.21.2/dist/tocbot.min.js
|
||||||
|
|
||||||
fontawesome:
|
fontawesome:
|
||||||
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css
|
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css
|
||||||
|
@ -33,27 +33,25 @@ 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@10.4.0/dist/mermaid.min.js
|
js: https://cdn.jsdelivr.net/npm/mermaid@10.5.0/dist/mermaid.min.js
|
||||||
|
|
||||||
dayjs:
|
dayjs:
|
||||||
js:
|
js:
|
||||||
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.9/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.9/locale/:LOCALE.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.9/plugin/relativeTime.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.9/plugin/localizedFormat.min.js
|
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.10/plugin/localizedFormat.min.js
|
||||||
|
|
||||||
magnific-popup:
|
magnific-popup:
|
||||||
css: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css
|
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
|
js: https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js
|
||||||
|
|
||||||
lazysizes:
|
lazy-polyfill:
|
||||||
js: https://cdn.jsdelivr.net/npm/lazysizes@5.3.2/lazysizes.min.js
|
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
|
||||||
|
js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js
|
||||||
|
|
||||||
clipboard:
|
clipboard:
|
||||||
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
|
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
|
||||||
|
|
||||||
polyfill:
|
|
||||||
js: https://polyfill.io/v3/polyfill.min.js?features=es6
|
|
||||||
|
|
||||||
mathjax:
|
mathjax:
|
||||||
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js
|
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- The Disqus lazy loading. -->
|
<!-- The Disqus lazy loading. -->
|
||||||
|
|
||||||
<div id="disqus_thread" class="mb-5">
|
<div id="disqus_thread">
|
||||||
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
'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': '{{ site.comments.giscus.lang | default: lang }}',
|
'data-lang': '{{ site.comments.giscus.lang | default: lang }}',
|
||||||
|
'data-loading': 'lazy',
|
||||||
crossorigin: 'anonymous',
|
crossorigin: 'anonymous',
|
||||||
async: ''
|
async: ''
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,51 +1,50 @@
|
||||||
<!-- https://utteranc.es/ -->
|
<!-- https://utteranc.es/ -->
|
||||||
<script src="https://utteranc.es/client.js"
|
<script
|
||||||
|
src="https://utteranc.es/client.js"
|
||||||
repo="{{ site.comments.utterances.repo }}"
|
repo="{{ site.comments.utterances.repo }}"
|
||||||
issue-term="{{ site.comments.utterances.issue_term }}"
|
issue-term="{{ site.comments.utterances.issue_term }}"
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
async>
|
async
|
||||||
</script>
|
></script>
|
||||||
|
|
||||||
<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 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;
|
||||||
|
const html = document.documentElement;
|
||||||
|
|
||||||
if ($("html[data-mode=dark]").length > 0
|
if (
|
||||||
|| ($("html[data-mode]").length == 0
|
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
|
||||||
&& window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
||||||
|
) {
|
||||||
initTheme = darkTheme;
|
initTheme = darkTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
addEventListener("message", (event) => {
|
addEventListener('message', (event) => {
|
||||||
let theme;
|
let theme;
|
||||||
|
|
||||||
/* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
|
/* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
|
||||||
if (event.origin === origin) {
|
if (event.origin === origin) {
|
||||||
/* page initial */
|
/* 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) {
|
|
||||||
/* global theme mode changed */
|
/* 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 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const message = {
|
const message = {
|
||||||
type: "set-theme",
|
type: 'set-theme',
|
||||||
theme: theme
|
theme: theme
|
||||||
};
|
};
|
||||||
|
|
||||||
const utterances = document.querySelector(iframe).contentWindow;
|
const utterances = document.querySelector(iframe).contentWindow;
|
||||||
utterances.postMessage(message, origin);
|
utterances.postMessage(message, origin);
|
||||||
});
|
});
|
||||||
|
})();
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<iframe class="embed-video twitch lazyload"
|
<iframe
|
||||||
|
class="embed-video twitch"
|
||||||
src="https://player.twitch.tv/?video={{ include.id }}&parent={{ site.url | split: '://' | last | remove: '/' }}"
|
src="https://player.twitch.tv/?video={{ include.id }}&parent={{ site.url | split: '://' | last | remove: '/' }}"
|
||||||
frameborder="0" allowfullscreen="true"
|
frameborder="0"
|
||||||
scrolling="no"></iframe>
|
allowfullscreen="true"
|
||||||
|
scrolling="no"
|
||||||
|
></iframe>
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<iframe class="embed-video youtube lazyload"
|
<iframe
|
||||||
|
class="embed-video youtube"
|
||||||
|
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"
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||||
allowfullscreen></iframe>
|
allowfullscreen
|
||||||
|
></iframe>
|
||||||
|
|
|
@ -80,6 +80,10 @@
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
|
<link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
||||||
|
<link rel="stylesheet" href="{{ site.data.origin[type]['lazy-polyfill'].css | relative_url }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if page.layout == 'page' or page.layout == 'post' %}
|
{% if page.layout == 'page' or page.layout == 'post' %}
|
||||||
<!-- Manific Popup -->
|
<!-- Manific Popup -->
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].magnific-popup.css | relative_url }}">
|
<link rel="stylesheet" href="{{ site.data.origin[type].magnific-popup.css | relative_url }}">
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<!-- layout specified -->
|
<!-- layout specified -->
|
||||||
|
|
||||||
{% 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].lazysizes.js %}
|
{% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %}
|
||||||
|
|
||||||
{% unless page.layout == 'home' %}
|
{% unless page.layout == 'home' %}
|
||||||
<!-- image lazy-loading & popup & clipboard -->
|
<!-- image lazy-loading & popup & clipboard -->
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script src="{{ site.data.origin[type].polyfill.js | relative_url }}"></script>
|
<script src="https://polyfill.io/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 %}
|
||||||
|
|
||||||
|
|
|
@ -30,22 +30,22 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Change the icon of checkbox -->
|
<!-- Change the icon of checkbox -->
|
||||||
|
|
||||||
{% if _content contains '<input type="checkbox"' %}
|
{% if _content contains '<input type="checkbox"' %}
|
||||||
{% assign _content = _content
|
{% assign _content = _content
|
||||||
| replace:
|
| replace: '<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />',
|
||||||
'<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />',
|
|
||||||
'<i class="fas fa-check-circle fa-fw checked"></i>'
|
'<i class="fas fa-check-circle fa-fw checked"></i>'
|
||||||
| replace:
|
| replace: '<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />',
|
||||||
'<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />',
|
|
||||||
'<i class="far fa-circle fa-fw"></i>'
|
'<i class="far fa-circle fa-fw"></i>'
|
||||||
%}
|
%}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- images -->
|
<!-- Handle images -->
|
||||||
|
|
||||||
{% assign IMG_TAG = '<img ' %}
|
{% assign IMG_TAG = '<img ' %}
|
||||||
|
|
||||||
{% if _content contains IMG_TAG %}
|
{% if _content contains IMG_TAG %}
|
||||||
{% assign _img_content = nil %}
|
{% assign _img_content = null %}
|
||||||
{% assign _img_snippets = _content | split: IMG_TAG %}
|
{% assign _img_snippets = _content | split: IMG_TAG %}
|
||||||
|
|
||||||
<!-- CDN URL -->
|
<!-- CDN URL -->
|
||||||
|
@ -81,10 +81,9 @@
|
||||||
{% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %}
|
{% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %}
|
||||||
{% assign _attrs = _left | split: '" ' %}
|
{% assign _attrs = _left | split: '" ' %}
|
||||||
|
|
||||||
{% assign _width = nil %}
|
{% assign _src = null %}
|
||||||
{% assign _height = nil %}
|
{% assign _lqip = null %}
|
||||||
{% assign _lqip = nil %}
|
{% assign _class = null %}
|
||||||
{% assign _class = nil %}
|
|
||||||
|
|
||||||
{% for _attr in _attrs %}
|
{% for _attr in _attrs %}
|
||||||
{% unless _attr contains '=' %}
|
{% unless _attr contains '=' %}
|
||||||
|
@ -96,10 +95,6 @@
|
||||||
{% capture _value %}{{ _pair | last | remove: '"' }}{% endcapture %}
|
{% capture _value %}{{ _pair | last | remove: '"' }}{% endcapture %}
|
||||||
|
|
||||||
{% case _key %}
|
{% case _key %}
|
||||||
{% when 'width' %}
|
|
||||||
{% assign _width = _value %}
|
|
||||||
{% when 'height' %}
|
|
||||||
{% assign _height = _value %}
|
|
||||||
{% when 'src' %}
|
{% when 'src' %}
|
||||||
{% assign _src = _value %}
|
{% assign _src = _value %}
|
||||||
{% when 'lqip' %}
|
{% when 'lqip' %}
|
||||||
|
@ -115,54 +110,40 @@
|
||||||
{% assign _left = _left | remove: _old_class %}
|
{% assign _left = _left | remove: _old_class %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% assign _final_src = nil %}
|
{% assign _final_src = null %}
|
||||||
|
{% assign _lazyload = true %}
|
||||||
|
|
||||||
{% unless _src contains '//' %}
|
{% unless _src contains '//' %}
|
||||||
{% assign _final_src = _path_prefix | append: _src %}
|
{% assign _final_src = _path_prefix | append: _src %}
|
||||||
{% capture _src_from %}"{{ _src }}"{% endcapture %}
|
{% assign _src_alt = 'src="' | append: _path_prefix %}
|
||||||
{% capture _src_to %}"{{ _final_src }}"{% endcapture %}
|
{% assign _left = _left | replace: 'src="', _src_alt %}
|
||||||
{% assign _left = _left | replace: _src_from, _src_to %}
|
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
|
||||||
{% if _lqip %}
|
{% if _lqip %}
|
||||||
{% unless _lqip contains ':' %}
|
{% assign _lazyload = false %}
|
||||||
{% assign _final_lqip = _path_prefix | append: _lqip %}
|
{% assign _class = _class | append: ' blur' %}
|
||||||
{% capture _lqip_from %}"{{ _lqip }}"{% endcapture %}
|
|
||||||
{% capture _lqip_to %}"{{ _final_lqip }}"{% endcapture %}
|
|
||||||
{% assign _left = _left | replace: _lqip_from, _lqip_to %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> -->
|
{% unless _lqip contains 'data:' %}
|
||||||
{% assign _left = _left | replace: 'src=', 'data-src=' %}
|
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
|
||||||
{% if _left contains 'class=' %}
|
{% assign _left = _left | replace: 'lqip="', _lqip_alt %}
|
||||||
{% assign _left = _left | replace: 'class="', 'class="lazyload '%}
|
{% endunless %}
|
||||||
{% else %}
|
|
||||||
{% assign _left = _left | append: ' class="lazyload"' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- add image placeholder -->
|
<!-- add image placeholder -->
|
||||||
{% if _lqip %}
|
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
|
||||||
{% assign _left = _left | replace: ' lqip=', ' data-lqip="true" src=' %}
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if _width and _height %}
|
|
||||||
<!-- add SVG placehoder -->
|
|
||||||
{%- capture _svg -%}
|
|
||||||
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 {{ _width }} {{ _height }}'%3E%3C/svg%3E"
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% assign _left = _svg | append: ' ' | append: _left %}
|
|
||||||
{% assign _class = _class | append: ' shimmer' %}
|
{% assign _class = _class | append: ' shimmer' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Bypass the HTML-proofer test -->
|
<!-- lazy-load images -->
|
||||||
{% assign _left = _left | append: ' data-proofer-ignore' %}
|
{% if _lazyload %}
|
||||||
|
{% assign _left = _left | append: ' loading="lazy"' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if page.layout == 'home' %}
|
{% if page.layout == 'home' %}
|
||||||
<!-- create the image wrapper -->
|
<!-- create the image wrapper -->
|
||||||
{%- capture _wrapper_start -%}
|
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %}
|
||||||
<div class="preview-img {{ _class | strip }}">
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% assign _img_content = _img_content | append: _wrapper_start %}
|
{% assign _img_content = _img_content | append: _wrapper_start %}
|
||||||
{% assign _right = _right | prepend: '></div' %}
|
{% assign _right = _right | prepend: '></div' %}
|
||||||
|
|
||||||
|
@ -177,25 +158,29 @@
|
||||||
class="img-link{% unless _lqip %} shimmer{% endunless %}"
|
class="img-link{% unless _lqip %} shimmer{% endunless %}"
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
{% assign _img_content = _img_content | slice: 0, _size | append: _class | append: '>' %}
|
{% assign _img_content = _img_content | slice: 0, _size | append: _class | append: '>' %}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<!-- create the image wrapper -->
|
<!-- create the image wrapper -->
|
||||||
{%- capture _wrapper_start -%}
|
{% assign _wrapper_start = _final_src
|
||||||
<a href="{{ _final_src | default: _src }}" class="popup img-link {{ _class }}">
|
| default: _src
|
||||||
{%- endcapture -%}
|
| prepend: '<a href="'
|
||||||
|
| append: '" class="popup img-link '
|
||||||
|
| append: _class
|
||||||
|
| append: '">'
|
||||||
|
%}
|
||||||
|
|
||||||
{% assign _img_content = _img_content | append: _wrapper_start %}
|
{% assign _img_content = _img_content | append: _wrapper_start %}
|
||||||
{% assign _right = _right | prepend: '></a' %}
|
{% assign _right = '></a' | append: _right %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- combine -->
|
<!-- combine -->
|
||||||
{% assign _img_content = _img_content | append: debug | append: IMG_TAG | append: _left | append: _right %}
|
{% assign _img_content = _img_content | append: IMG_TAG | append: _left | append: _right %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if _img_content %}
|
{% if _img_content %}
|
||||||
{% assign _content = _img_content %}
|
{% assign _content = _img_content %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Add header for code snippets -->
|
<!-- Add header for code snippets -->
|
||||||
|
@ -205,12 +190,10 @@
|
||||||
{% assign _new_content = '' %}
|
{% assign _new_content = '' %}
|
||||||
|
|
||||||
{% for _snippet in _code_spippets %}
|
{% for _snippet in _code_spippets %}
|
||||||
|
|
||||||
{% if forloop.last %}
|
{% if forloop.last %}
|
||||||
{% assign _new_content = _new_content | append: _snippet %}
|
{% assign _new_content = _new_content | append: _snippet %}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{% assign _left = _snippet | split: '><' | last %}
|
{% assign _left = _snippet | split: '><' | last %}
|
||||||
|
|
||||||
{% if _left contains 'file="' %}
|
{% if _left contains 'file="' %}
|
||||||
|
@ -226,7 +209,8 @@
|
||||||
<span data-label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
|
<span data-label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
|
||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
|
|
||||||
{% assign _new_content = _new_content | append: _snippet
|
{% assign _new_content = _new_content
|
||||||
|
| append: _snippet
|
||||||
| append: '<div class="code-header">'
|
| append: '<div class="code-header">'
|
||||||
| append: _label
|
| append: _label
|
||||||
| append: '<button aria-label="copy" data-title-succeed="'
|
| append: '<button aria-label="copy" data-title-succeed="'
|
||||||
|
@ -234,13 +218,10 @@
|
||||||
| append: '"><i class="far fa-clipboard"></i></button></div>'
|
| append: '"><i class="far fa-clipboard"></i></button></div>'
|
||||||
| append: '<div class="highlight"><code>'
|
| append: '<div class="highlight"><code>'
|
||||||
%}
|
%}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% assign _content = _new_content %}
|
{% assign _content = _new_content %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Create heading anchors -->
|
<!-- Create heading anchors -->
|
||||||
|
@ -249,11 +230,11 @@
|
||||||
{% assign _heading_content = _content %}
|
{% assign _heading_content = _content %}
|
||||||
|
|
||||||
{% for level in heading_levels %}
|
{% for level in heading_levels %}
|
||||||
{% capture mark_start %}<h{{ level }} id="{% endcapture %}
|
{% assign mark_start = '<h' | append: level | append: ' id="' %}
|
||||||
{% capture mark_end %}</h{{ level }}>{% endcapture %}
|
{% assign mark_end = '</h' | append: level | append: '>' %}
|
||||||
|
|
||||||
{% if _heading_content contains mark_start %}
|
{% if _heading_content contains mark_start %}
|
||||||
{% assign _new_content = nil %}
|
{% assign _new_content = null %}
|
||||||
{% assign heading_snippets = _heading_content | split: mark_start %}
|
{% assign heading_snippets = _heading_content | split: mark_start %}
|
||||||
|
|
||||||
{% for snippet in heading_snippets %}
|
{% for snippet in heading_snippets %}
|
||||||
|
@ -263,20 +244,19 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% assign id = snippet | split: '"' | first %}
|
{% assign id = snippet | split: '"' | first %}
|
||||||
{% capture anchor %}<a href="#{{ id }}" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>{% endcapture %}
|
{% assign anchor = '<a href="#'
|
||||||
|
| append: id
|
||||||
|
| append: '" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>'
|
||||||
|
%}
|
||||||
|
|
||||||
{% assign left = snippet | split: mark_end | first %}
|
{% assign left = snippet | split: mark_end | first %}
|
||||||
{% assign right = snippet | slice: left.size, snippet.size %}
|
{% assign right = snippet | slice: left.size, snippet.size %}
|
||||||
{% assign left = left | replace_first: '">', '"><span class="me-2">' | append: '</span>' %}
|
{% assign left = left | replace_first: '">', '"><span class="me-2">' | append: '</span>' %}
|
||||||
|
|
||||||
{% assign _new_content = _new_content | append: mark_start
|
{% assign _new_content = _new_content | append: mark_start | append: left | append: anchor | append: right %}
|
||||||
| append: left | append: anchor | append: right
|
|
||||||
%}
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% assign _heading_content = _new_content %}
|
{% assign _heading_content = _new_content %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
|
@ -78,9 +78,9 @@
|
||||||
<article class="col">
|
<article class="col">
|
||||||
<a href="{{ post.url | relative_url }}" class="post-preview card h-100">
|
<a href="{{ post.url | relative_url }}" class="post-preview card h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% include datetime.html date=post.date class="small" 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 small">
|
<div class="text-muted">
|
||||||
<p>
|
<p>
|
||||||
{% include no-linenos.html content=post.content %}
|
{% include no-linenos.html content=post.content %}
|
||||||
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if enable_toc %}
|
{% if enable_toc %}
|
||||||
<section id="toc-wrapper" class="ps-0 pe-4 mb-5">
|
<section id="toc-wrapper" class="ps-0 pe-4">
|
||||||
<h2 class="panel-heading ps-3 pt-2 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>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
||||||
import { initLocaleDatetime, imgLazy } from './modules/plugins';
|
import { initLocaleDatetime, loadImg } from './modules/plugins';
|
||||||
|
|
||||||
basic();
|
basic();
|
||||||
initSidebar();
|
initSidebar();
|
||||||
initTopbar();
|
initTopbar();
|
||||||
initLocaleDatetime();
|
initLocaleDatetime();
|
||||||
imgLazy();
|
loadImg();
|
||||||
|
|
|
@ -126,6 +126,5 @@ export function initClipboard() {
|
||||||
btnCopyLink.on('mouseleave', function (e) {
|
btnCopyLink.on('mouseleave', function (e) {
|
||||||
const target = $(e.target);
|
const target = $(e.target);
|
||||||
target.tooltip('hide');
|
target.tooltip('hide');
|
||||||
console.log('mouse leave...');
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
/**
|
|
||||||
* Set up image lazy-load
|
|
||||||
*/
|
|
||||||
|
|
||||||
function stopShimmer($node) {
|
|
||||||
$node.parent().removeClass('shimmer');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function imgLazy() {
|
|
||||||
const $images = $('main img[data-src]');
|
|
||||||
|
|
||||||
if ($images.length <= 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Stop shimmer when image loaded */
|
|
||||||
document.addEventListener('lazyloaded', function (e) {
|
|
||||||
stopShimmer($(e.target));
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Stop shimmer from cached images */
|
|
||||||
$images.each(function () {
|
|
||||||
if ($(this).hasClass('ls-is-cached')) {
|
|
||||||
stopShimmer($(this));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
61
_javascript/modules/components/img-loading.js
Normal file
61
_javascript/modules/components/img-loading.js
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* Setting up image lazy loading and LQIP switching
|
||||||
|
*/
|
||||||
|
|
||||||
|
const ATTR_DATA_SRC = 'data-src';
|
||||||
|
const ATTR_DATA_LQIP = 'data-lqip';
|
||||||
|
|
||||||
|
const cover = {
|
||||||
|
SHIMMER: 'shimmer',
|
||||||
|
BLUR: 'blur'
|
||||||
|
};
|
||||||
|
|
||||||
|
function removeCover(clzss) {
|
||||||
|
$(this).parent().removeClass(clzss);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleImage() {
|
||||||
|
if (!this.complete) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.hasAttribute(ATTR_DATA_LQIP)) {
|
||||||
|
removeCover.call(this, cover.BLUR);
|
||||||
|
} else {
|
||||||
|
removeCover.call(this, cover.SHIMMER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switches the LQIP with the real image URL.
|
||||||
|
*/
|
||||||
|
function switchLQIP() {
|
||||||
|
const $img = $(this);
|
||||||
|
const src = $img.attr(ATTR_DATA_SRC);
|
||||||
|
|
||||||
|
$img.attr('src', encodeURI(src));
|
||||||
|
$img.removeAttr(ATTR_DATA_SRC);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function loadImg() {
|
||||||
|
const $images = $('article img');
|
||||||
|
|
||||||
|
if ($images.length) {
|
||||||
|
$images.on('load', handleImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Images loaded from the browser cache do not trigger the 'load' event
|
||||||
|
$('article img[loading="lazy"]').each(function () {
|
||||||
|
if (this.complete) {
|
||||||
|
removeCover.call(this, cover.SHIMMER);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// LQIPs set by the data URI or WebP will not trigger the 'load' event,
|
||||||
|
// so manually convert the URI to the URL of a high-resolution image.
|
||||||
|
const $lqips = $(`article img[${ATTR_DATA_LQIP}="true"]`);
|
||||||
|
|
||||||
|
if ($lqips.length) {
|
||||||
|
$lqips.each(switchLQIP);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
export { categoryCollapse } from './components/category-collapse';
|
export { categoryCollapse } from './components/category-collapse';
|
||||||
export { initClipboard } from './components/clipboard';
|
export { initClipboard } from './components/clipboard';
|
||||||
export { imgLazy } from './components/img-lazyload';
|
export { loadImg } from './components/img-loading';
|
||||||
export { imgPopup } from './components/img-popup';
|
export { imgPopup } from './components/img-popup';
|
||||||
export { initLocaleDatetime } from './components/locale-datetime';
|
export { initLocaleDatetime } from './components/locale-datetime';
|
||||||
export { toc } from './components/toc';
|
export { toc } from './components/toc';
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
||||||
import { imgLazy, imgPopup, initClipboard } from './modules/plugins';
|
import { loadImg, imgPopup, initClipboard } from './modules/plugins';
|
||||||
|
|
||||||
basic();
|
basic();
|
||||||
initSidebar();
|
initSidebar();
|
||||||
initTopbar();
|
initTopbar();
|
||||||
imgLazy();
|
loadImg();
|
||||||
imgPopup();
|
imgPopup();
|
||||||
initClipboard();
|
initClipboard();
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
||||||
import {
|
import {
|
||||||
imgLazy,
|
loadImg,
|
||||||
imgPopup,
|
imgPopup,
|
||||||
initLocaleDatetime,
|
initLocaleDatetime,
|
||||||
initClipboard,
|
initClipboard,
|
||||||
toc
|
toc
|
||||||
} from './modules/plugins';
|
} from './modules/plugins';
|
||||||
|
|
||||||
basic();
|
|
||||||
initSidebar();
|
initSidebar();
|
||||||
initTopbar();
|
initTopbar();
|
||||||
imgLazy();
|
loadImg();
|
||||||
imgPopup();
|
imgPopup();
|
||||||
initLocaleDatetime();
|
initLocaleDatetime();
|
||||||
initClipboard();
|
initClipboard();
|
||||||
toc();
|
toc();
|
||||||
|
basic();
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
layout: compress
|
layout: compress
|
||||||
# Default layout
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
@ -9,14 +8,8 @@ layout: compress
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
|
||||||
{% capture prefer_mode %}
|
|
||||||
{% if site.theme_mode %}
|
{% if site.theme_mode %}
|
||||||
data-mode="{{ site.theme_mode }}"
|
{% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %}
|
||||||
{% endif %}
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
{% if layout.tail_includes %}
|
|
||||||
{% assign has_tail = true %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||||
|
@ -27,19 +20,20 @@ layout: compress
|
||||||
{% include sidebar.html lang=lang %}
|
{% include sidebar.html lang=lang %}
|
||||||
|
|
||||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||||
<div class="container px-xxl-5">
|
<div class="container d-flex flex-column px-xxl-5">
|
||||||
{% include topbar.html lang=lang %}
|
{% include topbar.html lang=lang %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row flex-grow-1">
|
||||||
<main
|
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||||
aria-label="Main Content"
|
{% if layout.refactor or layout.layout == 'default' %}
|
||||||
class="col-12 col-lg-11 col-xl-9 px-md-4{% unless has_tail %} pb-5{% endunless %}"
|
{% include refactor-content.html content=content lang=lang %}
|
||||||
>
|
{% else %}
|
||||||
{{ content }}
|
{{ content }}
|
||||||
|
{% endif %}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- panel -->
|
<!-- panel -->
|
||||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
|
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||||
<div class="access">
|
<div class="access">
|
||||||
{% include_cached update-list.html lang=lang %}
|
{% include_cached update-list.html lang=lang %}
|
||||||
{% include_cached trending-tags.html lang=lang %}
|
{% include_cached trending-tags.html lang=lang %}
|
||||||
|
@ -55,12 +49,10 @@ layout: compress
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- tail -->
|
<!-- tail -->
|
||||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||||
{% if has_tail %}
|
|
||||||
{% for _include in layout.tail_includes %}
|
{% for _include in layout.tail_includes %}
|
||||||
{% assign _include_path = _include | append: '.html' %}
|
{% assign _include_path = _include | append: '.html' %}
|
||||||
{% include {{ _include_path }} lang=lang %}
|
{% include {{ _include_path }} lang=lang %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% include_cached footer.html lang=lang %}
|
{% include_cached footer.html lang=lang %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
|
refactor: true
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
@ -39,15 +40,13 @@ layout: default
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% capture content %}
|
<div id="post-list" class="flex-grow-1 px-xl-1">
|
||||||
{% for post in posts %}
|
{% for post in posts %}
|
||||||
<article class="card-wrapper">
|
<article class="card-wrapper card">
|
||||||
<a href="{{ post.url | relative_url }}" class="card post-preview flex-md-row-reverse">
|
<a href="{{ post.url | relative_url }}" class="post-preview row g-0 flex-md-row-reverse">
|
||||||
{% if post.image %}
|
{% assign card_body_col = '12' %}
|
||||||
{% if post.image.lqip %}
|
|
||||||
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
{% if post.image %}
|
||||||
{% assign src = post.image.path | default: post.image %}
|
{% assign src = post.image.path | default: post.image %}
|
||||||
{% unless src contains '//' %}
|
{% unless src contains '//' %}
|
||||||
{% assign src = post.img_path | append: '/' | append: src | replace: '//', '/' %}
|
{% assign src = post.img_path | append: '/' | append: src | replace: '//', '/' %}
|
||||||
|
@ -55,13 +54,24 @@ layout: default
|
||||||
|
|
||||||
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
|
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
|
||||||
|
|
||||||
<img src="{{ src }}" w="17" h="10" alt="{{ alt }}" {{ lqip }}>
|
{% assign lqip = null %}
|
||||||
|
|
||||||
|
{% if post.image.lqip %}
|
||||||
|
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="col-md-5">
|
||||||
|
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% assign card_body_col = '7' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="col-md-{{ card_body_col }}">
|
||||||
<div class="card-body d-flex flex-column">
|
<div class="card-body d-flex flex-column">
|
||||||
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
||||||
|
|
||||||
<div class="card-text content mt-0 mb-2">
|
<div class="card-text content mt-0 mb-3">
|
||||||
<p>
|
<p>
|
||||||
{% include no-linenos.html content=post.content %}
|
{% include no-linenos.html content=post.content %}
|
||||||
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
{{ content | markdownify | strip_html | truncate: 200 | escape }}
|
||||||
|
@ -96,13 +106,10 @@ layout: default
|
||||||
<!-- .post-meta -->
|
<!-- .post-meta -->
|
||||||
</div>
|
</div>
|
||||||
<!-- .card-body -->
|
<!-- .card-body -->
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</article>
|
</article>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
<div id="post-list" class="flex-grow-1 pe-xl-2">
|
|
||||||
{% include refactor-content.html content=content lang=lang %}
|
|
||||||
</div>
|
</div>
|
||||||
<!-- #post-list -->
|
<!-- #post-list -->
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,7 @@
|
||||||
layout: default
|
layout: default
|
||||||
---
|
---
|
||||||
|
|
||||||
{% capture _content %}
|
{% include lang.html %}
|
||||||
{% if layout.refactor or page.layout == 'page' %}
|
|
||||||
{% include refactor-content.html content=content lang=lang %}
|
|
||||||
{% else %}
|
|
||||||
{{ content }}
|
|
||||||
{% endif %}
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
<article class="px-1">
|
<article class="px-1">
|
||||||
{% if page.layout == 'page' or page.collection == 'tabs' %}
|
{% if page.layout == 'page' or page.collection == 'tabs' %}
|
||||||
|
@ -18,9 +12,9 @@ layout: default
|
||||||
{{ title }}
|
{{ title }}
|
||||||
</h1>
|
</h1>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
{{ _content }}
|
{{ content }}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ _content }}
|
{{ content }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</article>
|
</article>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: default
|
||||||
refactor: true
|
refactor: true
|
||||||
panel_includes:
|
panel_includes:
|
||||||
- toc
|
- toc
|
||||||
|
@ -11,6 +11,7 @@ tail_includes:
|
||||||
|
|
||||||
{% include lang.html %}
|
{% include lang.html %}
|
||||||
|
|
||||||
|
<article class="px-1">
|
||||||
<header>
|
<header>
|
||||||
<h1 data-toc-skip>{{ page.title }}</h1>
|
<h1 data-toc-skip>{{ page.title }}</h1>
|
||||||
|
|
||||||
|
@ -34,14 +35,12 @@ tail_includes:
|
||||||
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
||||||
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
||||||
|
|
||||||
{% capture lqip %}
|
|
||||||
{% if page.image.lqip %}
|
{% if page.image.lqip %}
|
||||||
lqip="{{ page.image.lqip }}"
|
{%- capture lqip -%}lqip="{{ page.image.lqip }}"{%- endcapture -%}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
<div class="mt-3 mb-3">
|
<div class="mt-3 mb-3">
|
||||||
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip | strip }}>
|
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip }}>
|
||||||
{%- if page.image.alt -%}
|
{%- if page.image.alt -%}
|
||||||
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
@ -133,3 +132,4 @@ tail_includes:
|
||||||
<!-- .post-tail-bottom -->
|
<!-- .post-tail-bottom -->
|
||||||
</div>
|
</div>
|
||||||
<!-- div.post-tail-wrapper -->
|
<!-- div.post-tail-wrapper -->
|
||||||
|
</article>
|
||||||
|
|
|
@ -17,13 +17,17 @@ This post is to show Markdown syntax rendering on [**Chirpy**](https://github.co
|
||||||
|
|
||||||
## Headings
|
## Headings
|
||||||
|
|
||||||
<h1 class="mt-5">H1 - heading</h1>
|
# H1 - heading
|
||||||
|
{: .mt-4 .mb-0 }
|
||||||
|
|
||||||
<h2 data-toc-skip>H2 - heading</h2>
|
## H2 - heading
|
||||||
|
{: data-toc-skip='' .mt-4 .mb-0 }
|
||||||
|
|
||||||
<h3 data-toc-skip>H3 - heading</h3>
|
### H3 - heading
|
||||||
|
{: data-toc-skip='' .mt-4 .mb-0 }
|
||||||
|
|
||||||
<h4 data-toc-skip>H4 - heading</h4>
|
#### H4 - heading
|
||||||
|
{: data-toc-skip='' .mt-4 }
|
||||||
|
|
||||||
## Paragraph
|
## Paragraph
|
||||||
|
|
||||||
|
|
|
@ -107,9 +107,33 @@ math: true
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|
||||||
|
After enabling the mathematical feature, you can add math equations with the following syntax:
|
||||||
|
|
||||||
|
- **Block math** should be added with `$$ math $$` with **mandatory** blank lines before and after `$$`
|
||||||
|
- **Inline math** (in lines) should be added with `$$ math $$` without any blank line before or after `$$`
|
||||||
|
- **Inline math** (in lists) should be added with `\$$ math $$`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
<!-- Block math, keep all blank lines -->
|
||||||
|
|
||||||
|
$$
|
||||||
|
LaTeX_math_expression
|
||||||
|
$$
|
||||||
|
|
||||||
|
<!-- Inline math in lines, NO blank lines -->
|
||||||
|
|
||||||
|
"Lorem ipsum dolor sit amet, $$ LaTeX_math_expression $$ consectetur adipiscing elit."
|
||||||
|
|
||||||
|
<!-- Inline math in lists, escape the first `$` -->
|
||||||
|
|
||||||
|
1. \$$ LaTeX_math_expression $$
|
||||||
|
2. \$$ LaTeX_math_expression $$
|
||||||
|
3. \$$ LaTeX_math_expression $$
|
||||||
|
```
|
||||||
|
|
||||||
## Mermaid
|
## Mermaid
|
||||||
|
|
||||||
[**Mermaid**](https://github.com/mermaid-js/mermaid) is a great diagrams generation tool. To enable it on your post, add the following to the YAML block:
|
[**Mermaid**](https://github.com/mermaid-js/mermaid) is a great diagram generation tool. To enable it on your post, add the following to the YAML block:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
|
@ -123,7 +147,7 @@ Then you can use it like other markdown languages: surround the graph code with
|
||||||
|
|
||||||
### Caption
|
### Caption
|
||||||
|
|
||||||
Add italics to the next line of an image,then it will become the caption and appear at the bottom of the image:
|
Add italics to the next line of an image, then it will become the caption and appear at the bottom of the image:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
![img-description](/path/to/image)
|
![img-description](/path/to/image)
|
||||||
|
|
|
@ -70,9 +70,9 @@ Social contact options are displayed at the bottom of the sidebar. You can turn
|
||||||
|
|
||||||
### Customizing Stylesheet
|
### Customizing Stylesheet
|
||||||
|
|
||||||
If you need to customize the stylesheet, copy the theme's `assets/css/style.scss`{: .filepath} to the same path on your Jekyll site, and then add the custom style at the end of it.
|
If you need to customize the stylesheet, copy the theme's `assets/css/jekyll-theme-chirpy.scss`{: .filepath} to the same path on your Jekyll site, and then add the custom style at the end of it.
|
||||||
|
|
||||||
Starting with version `4.1.0`, if you want to overwrite the SASS variables defined in `_sass/addon/variables.scss`{: .filepath}, copy the main sass file `_sass/jekyll-theme-chirpy.scss`{: .filepath} into the `_sass`{: .filepath} directory in your site's source, then create a new file `_sass/variables-hook.scss`{: .filepath} and assign new value.
|
Starting with version `6.2.0`, if you want to overwrite the SASS variables defined in `_sass/addon/variables.scss`{: .filepath}, copy the main sass file `_sass/main.scss`{: .filepath} into the `_sass`{: .filepath} directory in your site's source, then create a new file `_sass/variables-hook.scss`{: .filepath} and assign new value.
|
||||||
|
|
||||||
### Customing Static Assets
|
### Customing Static Assets
|
||||||
|
|
||||||
|
@ -88,15 +88,6 @@ You may want to preview the site contents before publishing, so just run it by:
|
||||||
$ bundle exec jekyll s
|
$ bundle exec jekyll s
|
||||||
```
|
```
|
||||||
|
|
||||||
Or run the site on Docker with the following command:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -it --rm \
|
|
||||||
--volume="$PWD:/srv/jekyll" \
|
|
||||||
-p 4000:4000 jekyll/jekyll \
|
|
||||||
jekyll serve
|
|
||||||
```
|
|
||||||
|
|
||||||
After a few seconds, the local service will be published at _<http://127.0.0.1:4000>_.
|
After a few seconds, the local service will be published at _<http://127.0.0.1:4000>_.
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
@ -136,16 +127,6 @@ Go to the root of the source project, and build your site as follows:
|
||||||
$ JEKYLL_ENV=production bundle exec jekyll b
|
$ JEKYLL_ENV=production bundle exec jekyll b
|
||||||
```
|
```
|
||||||
|
|
||||||
Or build the site on Docker:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -it --rm \
|
|
||||||
--env JEKYLL_ENV=production \
|
|
||||||
--volume="$PWD:/srv/jekyll" \
|
|
||||||
jekyll/jekyll \
|
|
||||||
jekyll build
|
|
||||||
```
|
|
||||||
|
|
||||||
Unless you specified the output path, the generated site files will be placed in folder `_site`{: .filepath} of the project's root directory. Now you should upload those files to the target server.
|
Unless you specified the output path, the generated site files will be placed in folder `_site`{: .filepath} of the project's root directory. Now you should upload those files to the target server.
|
||||||
|
|
||||||
[nodejs]: https://nodejs.org/
|
[nodejs]: https://nodejs.org/
|
||||||
|
|
|
@ -73,52 +73,11 @@ img {
|
||||||
height: auto;
|
height: auto;
|
||||||
transition: all 0.35s ease-in-out;
|
transition: all 0.35s ease-in-out;
|
||||||
|
|
||||||
&[data-src] {
|
.blur & {
|
||||||
&[data-lqip='true'] {
|
$blur: 20px;
|
||||||
&.lazyload,
|
|
||||||
&.lazyloading {
|
|
||||||
-webkit-filter: blur(20px);
|
|
||||||
filter: blur(20px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not([data-lqip='true']) {
|
-webkit-filter: blur($blur);
|
||||||
&.lazyload,
|
filter: blur($blur);
|
||||||
&.lazyloading {
|
|
||||||
background: var(--img-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.lazyloaded {
|
|
||||||
-webkit-animation: fade-in 0.35s ease-in;
|
|
||||||
animation: fade-in 0.35s ease-in;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.shadow {
|
|
||||||
-webkit-filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));
|
|
||||||
filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));
|
|
||||||
box-shadow: none !important; /* cover the Bootstrap 4.6.1 styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
@extend %img-caption;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-webkit-keyframes fade-in {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fade-in {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,12 +132,11 @@ kbd {
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
font-size: 0.8rem;
|
|
||||||
background-color: var(--main-bg);
|
background-color: var(--main-bg);
|
||||||
height: $footer-height;
|
height: $footer-height;
|
||||||
border-top: 1px solid var(--main-border-color);
|
border-top: 1px solid var(--main-border-color);
|
||||||
|
|
||||||
@extend %text-color;
|
@extend %text-xs;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@extend %text-highlight;
|
@extend %text-highlight;
|
||||||
|
@ -189,7 +147,6 @@ footer {
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
line-height: 1.75;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
@ -273,6 +230,8 @@ i {
|
||||||
margin-bottom: 0.3rem;
|
margin-bottom: 0.3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@extend %sup-fn-target;
|
||||||
|
|
||||||
> p {
|
> p {
|
||||||
margin-left: 0.25em;
|
margin-left: 0.25em;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
@ -287,10 +246,13 @@ i {
|
||||||
@include pl-pr(2px);
|
@include pl-pr(2px);
|
||||||
|
|
||||||
border-bottom-style: none !important;
|
border-bottom-style: none !important;
|
||||||
transition: background-color 1.5s ease-in-out;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
@extend %sup-fn-target;
|
||||||
|
}
|
||||||
|
|
||||||
.reversefootnote {
|
.reversefootnote {
|
||||||
@at-root a#{&} {
|
@at-root a#{&} {
|
||||||
font-size: 0.6rem;
|
font-size: 0.6rem;
|
||||||
|
@ -344,6 +306,27 @@ i {
|
||||||
|
|
||||||
/* --- post --- */
|
/* --- post --- */
|
||||||
|
|
||||||
|
.preview-img {
|
||||||
|
aspect-ratio: 40 / 21;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
@extend %rounded;
|
||||||
|
|
||||||
|
&:not(.no-bg) {
|
||||||
|
background: var(--img-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: 100%;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
|
||||||
|
@extend %rounded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.post-preview {
|
.post-preview {
|
||||||
@extend %rounded;
|
@extend %rounded;
|
||||||
|
|
||||||
|
@ -372,7 +355,6 @@ i {
|
||||||
|
|
||||||
main {
|
main {
|
||||||
line-height: 1.75;
|
line-height: 1.75;
|
||||||
min-height: calc(100vh - $topbar-height - $footer-height);
|
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
|
@ -380,7 +362,6 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
> img[data-src],
|
|
||||||
> a.popup {
|
> a.popup {
|
||||||
&:not(.normal):not(.left):not(.right) {
|
&:not(.normal):not(.left):not(.right) {
|
||||||
@include align-center;
|
@include align-center;
|
||||||
|
@ -398,7 +379,7 @@ main {
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-meta {
|
.post-meta {
|
||||||
font-size: 0.85rem;
|
@extend %text-sm;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
&:not([class]):hover {
|
&:not([class]):hover {
|
||||||
|
@ -534,14 +515,15 @@ main {
|
||||||
background: var(--shimmer-bg);
|
background: var(--shimmer-bg);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
-webkit-animation: shimmer 1s infinite;
|
-webkit-animation: shimmer 1.3s infinite;
|
||||||
animation: shimmer 1s infinite;
|
animation: shimmer 1.3s infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes shimmer {
|
@-webkit-keyframes shimmer {
|
||||||
0% {
|
0% {
|
||||||
transform: translateX(-100%);
|
transform: translateX(-100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
100% {
|
100% {
|
||||||
transform: translateX(100%);
|
transform: translateX(100%);
|
||||||
}
|
}
|
||||||
|
@ -551,6 +533,7 @@ main {
|
||||||
0% {
|
0% {
|
||||||
transform: translateX(-100%);
|
transform: translateX(-100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
100% {
|
100% {
|
||||||
transform: translateX(100%);
|
transform: translateX(100%);
|
||||||
}
|
}
|
||||||
|
@ -689,7 +672,6 @@ mjx-container {
|
||||||
/* --- sidebar layout --- */
|
/* --- sidebar layout --- */
|
||||||
|
|
||||||
$sidebar-display: 'sidebar-display';
|
$sidebar-display: 'sidebar-display';
|
||||||
$btn-gap: 0.8rem; // for the bottom icons
|
|
||||||
$btn-border-width: 3px;
|
$btn-border-width: 3px;
|
||||||
$btn-mb: 0.5rem;
|
$btn-mb: 0.5rem;
|
||||||
|
|
||||||
|
@ -834,9 +816,11 @@ $btn-mb: 0.5rem;
|
||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
|
|
||||||
|
$btn-size: 1.75rem;
|
||||||
|
|
||||||
%button {
|
%button {
|
||||||
width: 1.75rem;
|
width: $btn-size;
|
||||||
height: 1.75rem;
|
height: $btn-size;
|
||||||
margin-bottom: $btn-mb; // multi line gap
|
margin-bottom: $btn-mb; // multi line gap
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
color: var(--sidebar-btn-color);
|
color: var(--sidebar-btn-color);
|
||||||
|
@ -858,12 +842,12 @@ $btn-mb: 0.5rem;
|
||||||
@extend %clickable-transition;
|
@extend %clickable-transition;
|
||||||
|
|
||||||
&:not(:last-child) {
|
&:not(:last-child) {
|
||||||
margin-right: $btn-gap;
|
margin-right: $sb-btn-gap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
i {
|
||||||
line-height: 1.75rem;
|
line-height: $btn-size;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mode-toggle {
|
.mode-toggle {
|
||||||
|
@ -877,7 +861,7 @@ $btn-mb: 0.5rem;
|
||||||
|
|
||||||
.icon-border {
|
.icon-border {
|
||||||
@extend %no-cursor;
|
@extend %no-cursor;
|
||||||
@include ml-mr(calc(($btn-gap - $btn-border-width) / 2));
|
@include ml-mr(calc(($sb-btn-gap - $btn-border-width) / 2));
|
||||||
|
|
||||||
background-color: var(--sidebar-btn-color);
|
background-color: var(--sidebar-btn-color);
|
||||||
content: '';
|
content: '';
|
||||||
|
@ -1121,12 +1105,16 @@ search {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- main wrapper --- */
|
/* --- basic wrappers --- */
|
||||||
|
|
||||||
#main-wrapper {
|
#main-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
@include pl-pr(0);
|
@include pl-pr(0);
|
||||||
|
|
||||||
|
> .container {
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#topbar-wrapper.row,
|
#topbar-wrapper.row,
|
||||||
|
@ -1135,6 +1123,12 @@ search {
|
||||||
@include ml-mr(0);
|
@include ml-mr(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tail-wrapper {
|
||||||
|
> :not(script) {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* --- button back-to-top --- */
|
/* --- button back-to-top --- */
|
||||||
|
|
||||||
#back-to-top {
|
#back-to-top {
|
||||||
|
@ -1270,10 +1264,6 @@ search {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
|
||||||
min-height: calc(100vh - $topbar-height - $footer-height-large);
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
@include slide;
|
@include slide;
|
||||||
|
|
||||||
|
@ -1287,7 +1277,7 @@ search {
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-wrapper {
|
#main-wrapper {
|
||||||
transform: translateX(#{$sidebar-width});
|
transform: translateX($sidebar-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
#back-to-top {
|
#back-to-top {
|
||||||
|
@ -1298,8 +1288,8 @@ search {
|
||||||
#sidebar {
|
#sidebar {
|
||||||
@include slide;
|
@include slide;
|
||||||
|
|
||||||
transform: translateX(-#{$sidebar-width}); /* hide */
|
transform: translateX(-$sidebar-width); /* hide */
|
||||||
-webkit-transform: translateX(-#{$sidebar-width});
|
-webkit-transform: translateX(-$sidebar-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-wrapper {
|
#main-wrapper {
|
||||||
|
@ -1474,7 +1464,7 @@ search {
|
||||||
|
|
||||||
@media all and (min-width: 1400px) {
|
@media all and (min-width: 1400px) {
|
||||||
#back-to-top {
|
#back-to-top {
|
||||||
right: calc((100vw - #{$sidebar-width} - 1140px) / 2 + 3rem);
|
right: calc((100vw - $sidebar-width - 1140px) / 2 + 3rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1491,7 +1481,7 @@ search {
|
||||||
|
|
||||||
search {
|
search {
|
||||||
margin-right: calc(
|
margin-right: calc(
|
||||||
#{$main-content-max-width} * 0.25 - #{$search-max-width} - 0.75rem
|
$main-content-max-width / 4 - $search-max-width - 0.75rem
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1508,15 +1498,13 @@ search {
|
||||||
|
|
||||||
#back-to-top {
|
#back-to-top {
|
||||||
right: calc(
|
right: calc(
|
||||||
(100vw - #{$sidebar-width-large} - #{$main-content-max-width}) / 2 + 2rem
|
(100vw - $sidebar-width-large - $main-content-max-width) / 2 + 2rem
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar {
|
#sidebar {
|
||||||
width: $sidebar-width-large;
|
width: $sidebar-width-large;
|
||||||
|
|
||||||
$icon-gap: 1rem; // for the bottom icons
|
|
||||||
|
|
||||||
.profile-wrapper {
|
.profile-wrapper {
|
||||||
margin-top: 3.5rem;
|
margin-top: 3.5rem;
|
||||||
margin-bottom: 2.5rem;
|
margin-bottom: 2.5rem;
|
||||||
|
@ -1534,11 +1522,11 @@ search {
|
||||||
margin-bottom: 1.75rem;
|
margin-bottom: 1.75rem;
|
||||||
|
|
||||||
a:not(:last-child) {
|
a:not(:last-child) {
|
||||||
margin-right: $icon-gap;
|
margin-right: $sb-btn-gap-lg;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-border {
|
.icon-border {
|
||||||
@include ml-mr(calc(($icon-gap - $btn-border-width) / 2));
|
@include ml-mr(calc(($sb-btn-gap-lg - $btn-border-width) / 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,10 +123,28 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
%text-highlight {
|
%text-highlight {
|
||||||
color: inherit;
|
color: var(--text-muted-hightlight-color);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%text-sm {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
%text-xs {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
%sup-fn-target {
|
||||||
|
&:target {
|
||||||
|
background-color: var(--footnote-target-bg);
|
||||||
|
width: -moz-fit-content;
|
||||||
|
width: -webkit-fit-content;
|
||||||
|
width: fit-content;
|
||||||
|
transition: background-color 1.75s ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------- scss mixin --------- */
|
/* ---------- scss mixin --------- */
|
||||||
|
|
||||||
@mixin mt-mb($value) {
|
@mixin mt-mb($value) {
|
||||||
|
|
|
@ -186,7 +186,7 @@ div {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: $code-header-height;
|
height: $code-header-height;
|
||||||
margin-left: 0.75rem;
|
margin-left: 0.75rem;
|
||||||
margin-right: 0.5rem;
|
margin-right: 0.25rem;
|
||||||
|
|
||||||
/* the label block */
|
/* the label block */
|
||||||
span {
|
span {
|
||||||
|
@ -267,7 +267,7 @@ div {
|
||||||
.code-header {
|
.code-header {
|
||||||
@include ml-mr(0);
|
@include ml-mr(0);
|
||||||
|
|
||||||
$dot-margin: calc($code-header-height / 2);
|
$dot-margin: 1rem;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
|
|
||||||
$sidebar-width: 260px !default; /* the basic width */
|
$sidebar-width: 260px !default; /* the basic width */
|
||||||
$sidebar-width-large: 300px !default; /* screen width: >= 1650px */
|
$sidebar-width-large: 300px !default; /* screen width: >= 1650px */
|
||||||
|
$sb-btn-gap: 0.8rem !default;
|
||||||
|
$sb-btn-gap-lg: 1rem !default;
|
||||||
|
|
||||||
/* other framework sizes */
|
/* other framework sizes */
|
||||||
|
|
||||||
|
@ -14,8 +16,7 @@ $search-max-width: 200px !default;
|
||||||
$footer-height: 5rem !default;
|
$footer-height: 5rem !default;
|
||||||
$footer-height-large: 6rem !default; /* screen width: < 850px */
|
$footer-height-large: 6rem !default; /* screen width: < 850px */
|
||||||
$main-content-max-width: 1250px !default;
|
$main-content-max-width: 1250px !default;
|
||||||
$bottom-min-height: 35rem !default;
|
$base-radius: 0.625rem !default;
|
||||||
$base-radius: 0.5rem !default;
|
|
||||||
$back2top-size: 2.75rem !default;
|
$back2top-size: 2.75rem !default;
|
||||||
|
|
||||||
/* syntax highlight */
|
/* syntax highlight */
|
||||||
|
|
|
@ -24,18 +24,22 @@
|
||||||
.highlight table td {
|
.highlight table td {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight table pre {
|
.highlight table pre {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight,
|
.highlight,
|
||||||
.highlight .w {
|
.highlight .w {
|
||||||
color: #d0d0d0;
|
color: #d0d0d0;
|
||||||
background-color: #151515;
|
background-color: #151515;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .err {
|
.highlight .err {
|
||||||
color: #151515;
|
color: #151515;
|
||||||
background-color: #ac4142;
|
background-color: #ac4142;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .c,
|
.highlight .c,
|
||||||
.highlight .ch,
|
.highlight .ch,
|
||||||
.highlight .cd,
|
.highlight .cd,
|
||||||
|
@ -45,32 +49,40 @@
|
||||||
.highlight .cs {
|
.highlight .cs {
|
||||||
color: #848484;
|
color: #848484;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .cp {
|
.highlight .cp {
|
||||||
color: #f4bf75;
|
color: #f4bf75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nt {
|
.highlight .nt {
|
||||||
color: #f4bf75;
|
color: #f4bf75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .o,
|
.highlight .o,
|
||||||
.highlight .ow {
|
.highlight .ow {
|
||||||
color: #d0d0d0;
|
color: #d0d0d0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .p,
|
.highlight .p,
|
||||||
.highlight .pi {
|
.highlight .pi {
|
||||||
color: #d0d0d0;
|
color: #d0d0d0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gi {
|
.highlight .gi {
|
||||||
color: #90a959;
|
color: #90a959;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gd {
|
.highlight .gd {
|
||||||
color: #f08a8b;
|
color: #f08a8b;
|
||||||
background-color: #320000;
|
background-color: #320000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gh {
|
.highlight .gh {
|
||||||
color: #6a9fb5;
|
color: #6a9fb5;
|
||||||
background-color: #151515;
|
background-color: #151515;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .k,
|
.highlight .k,
|
||||||
.highlight .kn,
|
.highlight .kn,
|
||||||
.highlight .kp,
|
.highlight .kp,
|
||||||
|
@ -78,15 +90,19 @@
|
||||||
.highlight .kv {
|
.highlight .kv {
|
||||||
color: #aa759f;
|
color: #aa759f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .kc {
|
.highlight .kc {
|
||||||
color: #d28445;
|
color: #d28445;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .kt {
|
.highlight .kt {
|
||||||
color: #d28445;
|
color: #d28445;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .kd {
|
.highlight .kd {
|
||||||
color: #d28445;
|
color: #d28445;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .s,
|
.highlight .s,
|
||||||
.highlight .sb,
|
.highlight .sb,
|
||||||
.highlight .sc,
|
.highlight .sc,
|
||||||
|
@ -98,30 +114,39 @@
|
||||||
.highlight .s1 {
|
.highlight .s1 {
|
||||||
color: #90a959;
|
color: #90a959;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .sa {
|
.highlight .sa {
|
||||||
color: #aa759f;
|
color: #aa759f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .sr {
|
.highlight .sr {
|
||||||
color: #75b5aa;
|
color: #75b5aa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .si {
|
.highlight .si {
|
||||||
color: #b76d45;
|
color: #b76d45;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .se {
|
.highlight .se {
|
||||||
color: #b76d45;
|
color: #b76d45;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nn {
|
.highlight .nn {
|
||||||
color: #f4bf75;
|
color: #f4bf75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nc {
|
.highlight .nc {
|
||||||
color: #f4bf75;
|
color: #f4bf75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .no {
|
.highlight .no {
|
||||||
color: #f4bf75;
|
color: #f4bf75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .na {
|
.highlight .na {
|
||||||
color: #6a9fb5;
|
color: #6a9fb5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .m,
|
.highlight .m,
|
||||||
.highlight .mb,
|
.highlight .mb,
|
||||||
.highlight .mf,
|
.highlight .mf,
|
||||||
|
@ -132,6 +157,7 @@
|
||||||
.highlight .mx {
|
.highlight .mx {
|
||||||
color: #90a959;
|
color: #90a959;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .ss {
|
.highlight .ss {
|
||||||
color: #90a959;
|
color: #90a959;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,17 @@
|
||||||
.highlight table td {
|
.highlight table td {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight table pre {
|
.highlight table pre {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight,
|
.highlight,
|
||||||
.highlight .w {
|
.highlight .w {
|
||||||
color: #24292f;
|
color: #24292f;
|
||||||
background-color: #f6f8fa;
|
background-color: #f6f8fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .k,
|
.highlight .k,
|
||||||
.highlight .kd,
|
.highlight .kd,
|
||||||
.highlight .kn,
|
.highlight .kn,
|
||||||
|
@ -41,41 +44,53 @@
|
||||||
.highlight .kv {
|
.highlight .kv {
|
||||||
color: #cf222e;
|
color: #cf222e;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gr {
|
.highlight .gr {
|
||||||
color: #f6f8fa;
|
color: #f6f8fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gd {
|
.highlight .gd {
|
||||||
color: #82071e;
|
color: #82071e;
|
||||||
background-color: #ffebe9;
|
background-color: #ffebe9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nb {
|
.highlight .nb {
|
||||||
color: #953800;
|
color: #953800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nc {
|
.highlight .nc {
|
||||||
color: #953800;
|
color: #953800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .no {
|
.highlight .no {
|
||||||
color: #953800;
|
color: #953800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nn {
|
.highlight .nn {
|
||||||
color: #953800;
|
color: #953800;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .sr {
|
.highlight .sr {
|
||||||
color: #116329;
|
color: #116329;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .na {
|
.highlight .na {
|
||||||
color: #116329;
|
color: #116329;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nt {
|
.highlight .nt {
|
||||||
color: #116329;
|
color: #116329;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gi {
|
.highlight .gi {
|
||||||
color: #116329;
|
color: #116329;
|
||||||
background-color: #dafbe1;
|
background-color: #dafbe1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .kc {
|
.highlight .kc {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .l,
|
.highlight .l,
|
||||||
.highlight .ld,
|
.highlight .ld,
|
||||||
.highlight .m,
|
.highlight .m,
|
||||||
|
@ -88,21 +103,27 @@
|
||||||
.highlight .mx {
|
.highlight .mx {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .sb {
|
.highlight .sb {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .bp {
|
.highlight .bp {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .ne {
|
.highlight .ne {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nl {
|
.highlight .nl {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .py {
|
.highlight .py {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nv,
|
.highlight .nv,
|
||||||
.highlight .vc,
|
.highlight .vc,
|
||||||
.highlight .vg,
|
.highlight .vg,
|
||||||
|
@ -110,18 +131,22 @@
|
||||||
.highlight .vm {
|
.highlight .vm {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .o,
|
.highlight .o,
|
||||||
.highlight .ow {
|
.highlight .ow {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gh {
|
.highlight .gh {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gu {
|
.highlight .gu {
|
||||||
color: #0550ae;
|
color: #0550ae;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .s,
|
.highlight .s,
|
||||||
.highlight .sa,
|
.highlight .sa,
|
||||||
.highlight .sc,
|
.highlight .sc,
|
||||||
|
@ -135,17 +160,21 @@
|
||||||
.highlight .ss {
|
.highlight .ss {
|
||||||
color: #0a3069;
|
color: #0a3069;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nd {
|
.highlight .nd {
|
||||||
color: #8250df;
|
color: #8250df;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .nf,
|
.highlight .nf,
|
||||||
.highlight .fm {
|
.highlight .fm {
|
||||||
color: #8250df;
|
color: #8250df;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .err {
|
.highlight .err {
|
||||||
color: #f6f8fa;
|
color: #f6f8fa;
|
||||||
background-color: #82071e;
|
background-color: #82071e;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .c,
|
.highlight .c,
|
||||||
.highlight .ch,
|
.highlight .ch,
|
||||||
.highlight .cd,
|
.highlight .cd,
|
||||||
|
@ -156,22 +185,28 @@
|
||||||
.highlight .cs {
|
.highlight .cs {
|
||||||
color: #68717a;
|
color: #68717a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gl {
|
.highlight .gl {
|
||||||
color: #68717a;
|
color: #68717a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gt {
|
.highlight .gt {
|
||||||
color: #68717a;
|
color: #68717a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .ni {
|
.highlight .ni {
|
||||||
color: #24292f;
|
color: #24292f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .si {
|
.highlight .si {
|
||||||
color: #24292f;
|
color: #24292f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .ge {
|
.highlight .ge {
|
||||||
color: #24292f;
|
color: #24292f;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight .gs {
|
.highlight .gs {
|
||||||
color: #24292f;
|
color: #24292f;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
/* Common color */
|
/* Common color */
|
||||||
--text-color: rgb(175, 176, 177);
|
--text-color: rgb(175, 176, 177);
|
||||||
--text-muted-color: #868686;
|
--text-muted-color: #868686;
|
||||||
|
--text-muted-hightlight-color: #aeaeae;
|
||||||
--heading-color: #cccccc;
|
--heading-color: #cccccc;
|
||||||
--label-color: #a7a7a7;
|
--label-color: #a7a7a7;
|
||||||
--blockquote-border-color: rgb(66, 66, 66);
|
--blockquote-border-color: rgb(66, 66, 66);
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
/* Common color */
|
/* Common color */
|
||||||
--text-color: #34343c;
|
--text-color: #34343c;
|
||||||
--text-muted-color: #757575;
|
--text-muted-color: #757575;
|
||||||
|
--text-muted-hightlight-color: inherit;
|
||||||
--heading-color: #2a2a2a;
|
--heading-color: #2a2a2a;
|
||||||
--label-color: #585858;
|
--label-color: #585858;
|
||||||
--blockquote-border-color: #eeeeee;
|
--blockquote-border-color: #eeeeee;
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
|
|
||||||
.card-wrapper {
|
.card-wrapper {
|
||||||
display: block;
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
@ -18,27 +16,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
|
border: 0;
|
||||||
|
background: none;
|
||||||
|
|
||||||
%img-radius {
|
%img-radius {
|
||||||
border-radius: $base-radius $base-radius 0 0;
|
border-radius: $base-radius $base-radius 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-img {
|
.preview-img {
|
||||||
height: 10rem;
|
|
||||||
|
|
||||||
@extend %img-radius;
|
@extend %img-radius;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
-o-object-fit: cover;
|
|
||||||
object-fit: cover;
|
|
||||||
|
|
||||||
@extend %img-radius;
|
@extend %img-radius;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-body {
|
.card-body {
|
||||||
min-height: 10.5rem;
|
height: 100%;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
|
@ -136,20 +130,13 @@
|
||||||
|
|
||||||
/* Tablet */
|
/* Tablet */
|
||||||
@media all and (min-width: 768px) {
|
@media all and (min-width: 768px) {
|
||||||
#post-list {
|
|
||||||
%img-radius {
|
%img-radius {
|
||||||
border-radius: 0 $base-radius $base-radius 0;
|
border-radius: 0 $base-radius $base-radius 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#post-list {
|
||||||
.card {
|
.card {
|
||||||
.preview-img {
|
|
||||||
width: 20rem;
|
|
||||||
height: 11.55rem; // can hold 2 lines each for title and content
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-body {
|
.card-body {
|
||||||
min-height: 10.75rem;
|
|
||||||
width: 60%;
|
|
||||||
padding: 1.75rem 1.75rem 1.25rem 1.75rem;
|
padding: 1.75rem 1.75rem 1.25rem 1.75rem;
|
||||||
|
|
||||||
.card-text {
|
.card-text {
|
||||||
|
|
|
@ -22,30 +22,6 @@
|
||||||
padding-right: $pr;
|
padding-right: $pr;
|
||||||
}
|
}
|
||||||
|
|
||||||
%text-color {
|
|
||||||
color: var(--text-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.preview-img {
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 40 / 21;
|
|
||||||
|
|
||||||
@extend %rounded;
|
|
||||||
|
|
||||||
&:not(.no-bg) {
|
|
||||||
img.lazyloaded {
|
|
||||||
background: var(--img-bg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
-o-object-fit: cover;
|
|
||||||
object-fit: cover;
|
|
||||||
|
|
||||||
@extend %rounded;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 + .post-meta {
|
h1 + .post-meta {
|
||||||
> span + span::before {
|
> span + span::before {
|
||||||
@include dot;
|
@include dot;
|
||||||
|
@ -53,7 +29,7 @@ h1 + .post-meta {
|
||||||
|
|
||||||
em,
|
em,
|
||||||
time {
|
time {
|
||||||
color: var(--text-color);
|
@extend %text-highlight;
|
||||||
}
|
}
|
||||||
|
|
||||||
em {
|
em {
|
||||||
|
@ -64,13 +40,10 @@ h1 + .post-meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-tail-wrapper {
|
.post-tail-wrapper {
|
||||||
|
@extend %text-sm;
|
||||||
|
|
||||||
margin-top: 6rem;
|
margin-top: 6rem;
|
||||||
border-bottom: 1px double var(--main-border-color);
|
border-bottom: 1px double var(--main-border-color);
|
||||||
font-size: 0.85rem;
|
|
||||||
|
|
||||||
.post-tail-bottom a {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.license-wrapper {
|
.license-wrapper {
|
||||||
line-height: 1.2rem;
|
line-height: 1.2rem;
|
||||||
|
@ -84,7 +57,7 @@ h1 + .post-meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
span:last-child {
|
span:last-child {
|
||||||
font-size: 0.85rem;
|
@extend %text-sm;
|
||||||
}
|
}
|
||||||
} /* .license-wrapper */
|
} /* .license-wrapper */
|
||||||
|
|
||||||
|
@ -324,6 +297,7 @@ h1 + .post-meta {
|
||||||
|
|
||||||
time {
|
time {
|
||||||
@extend %normal-font-style;
|
@extend %normal-font-style;
|
||||||
|
@extend %text-xs;
|
||||||
|
|
||||||
color: var(--text-muted-color);
|
color: var(--text-muted-color);
|
||||||
}
|
}
|
||||||
|
@ -340,27 +314,18 @@ h1 + .post-meta {
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
h4 {
|
h4 {
|
||||||
@extend %text-color;
|
|
||||||
@extend %text-clip;
|
@extend %text-clip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#tail-wrapper {
|
|
||||||
min-height: 2rem;
|
|
||||||
|
|
||||||
> *:not(:last-child) {
|
|
||||||
margin-top: 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
> *:nth-last-child(2) {
|
|
||||||
margin-bottom: 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* stylelint-disable-next-line selector-id-pattern */
|
/* stylelint-disable-next-line selector-id-pattern */
|
||||||
#disqus_thread {
|
#disqus_thread {
|
||||||
min-height: 8.5rem;
|
min-height: 8.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.utterances {
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
%btn-share-hovor {
|
%btn-share-hovor {
|
||||||
|
@ -376,10 +341,6 @@ h1 + .post-meta {
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (max-width: 576px) {
|
@media all and (max-width: 576px) {
|
||||||
.preview-img[data-src] {
|
|
||||||
margin-top: 2.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-tail-bottom {
|
.post-tail-bottom {
|
||||||
flex-wrap: wrap-reverse !important;
|
flex-wrap: wrap-reverse !important;
|
||||||
|
|
||||||
|
@ -404,9 +365,4 @@ h1 + .post-meta {
|
||||||
margin-left: -0.5rem;
|
margin-left: -0.5rem;
|
||||||
margin-right: -0.5rem;
|
margin-right: -0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-img[data-src] {
|
|
||||||
max-width: 100vw;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ permalink: '/sw.js'
|
||||||
|
|
||||||
self.importScripts('{{ "/assets/js/data/swcache.js" | relative_url }}');
|
self.importScripts('{{ "/assets/js/data/swcache.js" | relative_url }}');
|
||||||
|
|
||||||
const cacheName = 'chirpy-{{ "now" | date: "%Y%m%d.%H%M%S" }}';
|
const cacheName = 'chirpy-{{ "now" | date: "%s" }}';
|
||||||
|
|
||||||
function verifyDomain(url) {
|
function verifyDomain(url) {
|
||||||
for (const domain of allowedDomains) {
|
for (const domain of allowedDomains) {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 6737eab720e4cdd8330d32053053356f200d8819
|
Subproject commit 6e3fa734685f099195b02da912ffa25c04913e41
|
|
@ -1,38 +1,41 @@
|
||||||
# Contributing Guidelines
|
# Contributing Guidelines
|
||||||
|
|
||||||
:tada: _First of all, thank you for considering contributing to this project!_ :tada:
|
_First of all, thank you for considering contributing to this project_ ! :tada:
|
||||||
|
|
||||||
There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug
|
There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug
|
||||||
reports and feature requests or writing code which can be incorporated into Chirpy itself.
|
reports and feature requests, or writing code that can be incorporated into the project. In order to make a good
|
||||||
|
experience for both contributors and maintainers, please start with the "[General Rules](#general-rules)"
|
||||||
|
before taking further action.
|
||||||
|
|
||||||
## In This Article
|
## Table of Contents
|
||||||
|
|
||||||
- [General Rules](#general-rules)
|
- [General Rules](#general-rules)
|
||||||
- [Questions and Requests for Help](#questions-and-requests-for-help)
|
- [Questions and Requests for Help](#questions-and-requests-for-help)
|
||||||
- [File a Bug Report](#file-a-bug-report)
|
- [Reporting a Bug](#reporting-a-bug)
|
||||||
- [Suggest a New Feature](#suggest-a-new-feature)
|
- [Suggesting a New Feature](#suggesting-a-new-feature)
|
||||||
- [Contributing Code and Documentation Changes](#contributing-code-and-documentation-changes)
|
- [Contributing Code/Documentation](#contributing-codedocumentation)
|
||||||
- [Helpful Resources](#helpful-resources)
|
- [Helpful Resources](#helpful-resources)
|
||||||
|
|
||||||
## General Rules
|
## General Rules
|
||||||
|
|
||||||
All contributions should be based on the following rules:
|
All types of contributions (_pull requests_, _issues_, and _discussions_) should follow these rules:
|
||||||
|
|
||||||
- You should read through the [Wiki][wiki] to understand the project features and how to use it properly. This is to
|
- You should read through the [Wiki][wiki] to understand the project features and how to use it properly. This is to
|
||||||
respect the time of the project's developers and
|
respect the time of the project's developers and
|
||||||
maintainers, and to save their energy for other problems that really need to be resolved.
|
maintainers and to save their energy for other problems that really need to be resolved.
|
||||||
|
|
||||||
- Use the [latest release version][latest-ver]. If your contribution involves code/documentation changes, update to the
|
- Use the [latest release version][latest-ver]. If your contribution involves code/documentation changes, update to the
|
||||||
latest version of the default (`master`) branch.
|
latest version of the default (`master`) branch.
|
||||||
|
|
||||||
- Avoid making duplicate contributions by searching for existing [Issues][issues] / [Discussioins][discus] /
|
- Avoid making duplicate contributions by searching for existing [issues][issues] / [discussions][discus] /
|
||||||
[Pull Requests][pr], but don't leave any unhelpful comments such as "I have the same problem". Prefer using
|
[pull requests][pr], but don't leave any unhelpful comments such as "I have the same problem". Prefer using
|
||||||
[reactions][gh-reactions] if you simply want to "+1" an existing issue.
|
[reactions][gh-reactions] if you simply want to "+1" an existing issue.
|
||||||
|
|
||||||
- DO NOT email or tweet the
|
- DO NOT email or tweet the
|
||||||
project developers and maintainers directly, everything about Chirpy should be left in GitHub.
|
project developers and maintainers directly, everything about the project should be left on GitHub.
|
||||||
|
|
||||||
**Tips**: If you're new to open source, see "[How To Ask Questions The Smart Way][ext-reading]".
|
**Tip**: If you are new to the open-source community, then please read through
|
||||||
|
"[How To Ask Questions The Smart Way][ext-reading]" before contributing.
|
||||||
|
|
||||||
## Questions and Requests for Help
|
## Questions and Requests for Help
|
||||||
|
|
||||||
|
@ -43,7 +46,7 @@ enthusiastic geeks who will positively answer your challenging questions.
|
||||||
If you can't get an answer in any of the above ways, then create a new [discussion][discus]. As long as it is not a
|
If you can't get an answer in any of the above ways, then create a new [discussion][discus]. As long as it is not a
|
||||||
duplicate and [RTFM][rtfm] / [STFW][stfw] issue, we will respond as soon as possible.
|
duplicate and [RTFM][rtfm] / [STFW][stfw] issue, we will respond as soon as possible.
|
||||||
|
|
||||||
## File a Bug Report
|
## Reporting a Bug
|
||||||
|
|
||||||
A great way to contribute to the project is to send a detailed issue when you encounter a problem. We always appreciate
|
A great way to contribute to the project is to send a detailed issue when you encounter a problem. We always appreciate
|
||||||
a well-written, thorough bug report.
|
a well-written, thorough bug report.
|
||||||
|
@ -58,34 +61,34 @@ You can learn about Jekyll and modern Web development to solve problems caused b
|
||||||
|
|
||||||
3. Make good use of your browser's incognito mode to troubleshoot if the problem is caused by caching.
|
3. Make good use of your browser's incognito mode to troubleshoot if the problem is caused by caching.
|
||||||
|
|
||||||
4. As a last option, you can create a new [Bug Report][new-issue] follow the template to describe the details.
|
4. As a last option, you can create a new [Bug Report][bug-report] following the template to describe the details.
|
||||||
If possible, providing a demo that reproduces the error will help us troubleshoot faster.
|
If possible, providing a demo that reproduces the error will help us troubleshoot faster.
|
||||||
|
|
||||||
## Suggest a New Feature
|
## Suggesting a New Feature
|
||||||
|
|
||||||
Feature requests are welcome! While we will consider all requests, we cannot guarantee your request will be accepted.
|
Feature requests are welcome! While we will consider all requests, we cannot guarantee your request will be accepted.
|
||||||
|
We want to avoid chaos in the UI design and therefore do not accept requests for changes like color schemes,
|
||||||
We want to avoid chaos in the UI design, so we won't accept requests for changes like color schemes, font families,
|
fontfamilies, typography, and so on. We want to avoid [feature creep][feat-creep] and focus only on the core features.
|
||||||
typography, and so on. **Do not open a duplicate feature request.** Search for existing feature requests first. If you
|
|
||||||
find your feature (or one very similar) previously requested, comment on that issue.
|
|
||||||
|
|
||||||
If accepted, we cannot make any commitments regarding the timeline for implementation and release. However, you are
|
If accepted, we cannot make any commitments regarding the timeline for implementation and release. However, you are
|
||||||
welcome to submit a pull request to help!
|
welcome to submit a pull request to help!
|
||||||
|
|
||||||
## Contributing Code and Documentation Changes
|
## Contributing Code/Documentation
|
||||||
|
|
||||||
In short, you can follow these steps to complete the contribution.
|
If your request is about an enhancement, it is recommended to first submit a
|
||||||
|
[Feature Request][feat-request] to discuss whether your idea fits the project.
|
||||||
|
See also: "[Suggesting a New Feature](#suggesting-a-new-feature)". Other than that, you can start the PR process.
|
||||||
|
|
||||||
1. Fork this project on GitHub and clone your repository locally.
|
1. Fork this project on GitHub and clone your repository locally.
|
||||||
2. Setting up the [development & test environments][dev-env].
|
2. Setting up the [development & test environments][dev-env].
|
||||||
3. Create a new branch from the default branch and give it a descriptive name (e.g. `add-a-new-feat` or `fix-a-bug`).
|
3. Creating a new branch from the default branch and give it a descriptive name (e.g. `add-a-new-feat` or `fix-a-bug`).
|
||||||
When development is complete, create a [Conventional Commit][cc] with Git.
|
When development is complete, create a [Conventional Commit][cc] with Git.
|
||||||
4. Create a new [Pull Request][gh-pr].
|
4. Submitting a [Pull Request][gh-pr].
|
||||||
|
|
||||||
## Helpful Resources
|
## Helpful Resources
|
||||||
|
|
||||||
- [Code of conduct](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CODE_OF_CONDUCT.md)
|
- [Code of conduct](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CODE_OF_CONDUCT.md)
|
||||||
- [Security policy](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/SECURITY.md)
|
- [Security policy](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/SECURITY.md)
|
||||||
|
- [How To Ask Questions The Smart Way][ext-reading]
|
||||||
|
|
||||||
[latest-ver]: https://github.com/cotes2020/jekyll-theme-chirpy/releases/latest
|
[latest-ver]: https://github.com/cotes2020/jekyll-theme-chirpy/releases/latest
|
||||||
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
|
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
|
||||||
|
@ -98,7 +101,9 @@ When development is complete, create a [Conventional Commit][cc] with Git.
|
||||||
[rtfm]: https://en.wikipedia.org/wiki/RTFM
|
[rtfm]: https://en.wikipedia.org/wiki/RTFM
|
||||||
[stfw]: https://www.webster-dictionary.org/definition/STFW
|
[stfw]: https://www.webster-dictionary.org/definition/STFW
|
||||||
[gh-reactions]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
|
[gh-reactions]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
|
||||||
[new-issue]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new/choose
|
[bug-report]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?assignees=&labels=&projects=&template=bug_report.yml
|
||||||
|
[feat-request]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.yml
|
||||||
|
[feat-creep]: https://en.wikipedia.org/wiki/Feature_creep
|
||||||
[dev-env]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki/Development-&-Test-Environments
|
[dev-env]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki/Development-&-Test-Environments
|
||||||
[cc]: https://www.conventionalcommits.org/
|
[cc]: https://www.conventionalcommits.org/
|
||||||
[gh-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
|
[gh-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
|
||||||
|
|
|
@ -21,13 +21,13 @@
|
||||||
"fixlint": "npm run test -- --fix"
|
"fixlint": "npm run test -- --fix"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.22.17",
|
"@babel/core": "^7.23.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||||
"@babel/preset-env": "^7.22.15",
|
"@babel/preset-env": "^7.22.20",
|
||||||
"@rollup/plugin-babel": "^6.0.3",
|
"@rollup/plugin-babel": "^6.0.3",
|
||||||
"@rollup/plugin-terser": "^0.4.3",
|
"@rollup/plugin-terser": "^0.4.3",
|
||||||
"rimraf": "^5.0.1",
|
"rimraf": "^5.0.5",
|
||||||
"rollup": "^3.29.0",
|
"rollup": "^3.29.4",
|
||||||
"rollup-plugin-license": "^3.1.0",
|
"rollup-plugin-license": "^3.1.0",
|
||||||
"stylelint": "^15.10.3",
|
"stylelint": "^15.10.3",
|
||||||
"stylelint-config-standard-scss": "^11.0.0"
|
"stylelint-config-standard-scss": "^11.0.0"
|
||||||
|
|
|
@ -25,6 +25,7 @@ PROD_BRANCH="production"
|
||||||
|
|
||||||
GEM_SPEC="jekyll-theme-chirpy.gemspec"
|
GEM_SPEC="jekyll-theme-chirpy.gemspec"
|
||||||
NODE_CONFIG="package.json"
|
NODE_CONFIG="package.json"
|
||||||
|
CHANGE_LOG="docs/CHANGELOG.md"
|
||||||
|
|
||||||
JS_DIST="assets/js/dist"
|
JS_DIST="assets/js/dist"
|
||||||
BACKUP_PATH="$(mktemp -d)"
|
BACKUP_PATH="$(mktemp -d)"
|
||||||
|
@ -103,15 +104,15 @@ check() {
|
||||||
# auto-generate a new version number to the file 'package.json' and
|
# auto-generate a new version number to the file 'package.json' and
|
||||||
bump_node() {
|
bump_node() {
|
||||||
if $opt_pre; then
|
if $opt_pre; then
|
||||||
standard-version --prerelease rc
|
standard-version -i "$CHANGE_LOG" -p rc
|
||||||
else
|
else
|
||||||
standard-version
|
standard-version -i "$CHANGE_LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Change heading of Patch version to heading level 2 (a bug from `standard-version`)
|
# Change heading of Patch version to heading level 2 (a bug from `standard-version`)
|
||||||
sed -i "s/^### \[/## \[/g" CHANGELOG.md
|
sed -i "s/^### \[/## \[/g" "$CHANGE_LOG"
|
||||||
# Replace multiple empty lines with a single empty line
|
# Replace multiple empty lines with a single empty line
|
||||||
sed -i "/^$/N;/^\n$/D" CHANGELOG.md
|
sed -i "/^$/N;/^\n$/D" "$CHANGE_LOG"
|
||||||
}
|
}
|
||||||
|
|
||||||
## Bump new version to gem config file
|
## Bump new version to gem config file
|
||||||
|
|
Loading…
Reference in a new issue