fix: vendor PaperMod as regular files
This commit is contained in:
Submodule themes/PaperMod deleted from 154d006e01
+112
@@ -0,0 +1,112 @@
|
|||||||
|
name: Bug Report 🐞
|
||||||
|
description: Create a report to help us improve
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels: ["bug", "triage"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report :)
|
||||||
|
- Kindly **DO NOT** ask for instructions.
|
||||||
|
- Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question.
|
||||||
|
- You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users
|
||||||
|
- Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation.
|
||||||
|
- Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions.
|
||||||
|
- Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created.
|
||||||
|
- type: textarea
|
||||||
|
id: what_happened
|
||||||
|
attributes:
|
||||||
|
label: What happened?
|
||||||
|
description: Also tell us, what did you expect to happen?
|
||||||
|
placeholder: A bug happened! Here are the screenshots.. Tell us what you see!
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps_to_reproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: How to reproduce this issue. Here are the steps...
|
||||||
|
placeholder: |
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: hugo_version
|
||||||
|
attributes:
|
||||||
|
label: Hugo Version
|
||||||
|
description: What version of Hugo are you running?
|
||||||
|
options:
|
||||||
|
- Hugo >= 0.146.0 (Recommended - Minimum version required for PaperMod)
|
||||||
|
- Hugo < 0.146.0 (Incompatible - Not recommended to build PaperMod on lower versions)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: papermod_version
|
||||||
|
attributes:
|
||||||
|
label: PaperMod Version
|
||||||
|
description: What version of PaperMod are you running?
|
||||||
|
placeholder: |
|
||||||
|
PaperMod v7.0 or
|
||||||
|
Branch master or
|
||||||
|
Commit-id: 3f50861a0ced88f9b614a43662edeb4c0bc45da8
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: browser_type
|
||||||
|
attributes:
|
||||||
|
label: What kind of devices are you seeing the problem on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Mobile
|
||||||
|
- Desktop
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
id: browsers
|
||||||
|
attributes:
|
||||||
|
label: What browsers are you seeing the problem on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Firefox
|
||||||
|
- Chrome
|
||||||
|
- Safari
|
||||||
|
- Microsoft Edge
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: input
|
||||||
|
id: browser_version
|
||||||
|
attributes:
|
||||||
|
label: Browser Version
|
||||||
|
description: Please add browser version or enter user agent string (navigator.userAgent)
|
||||||
|
placeholder: ex. Google Chrome 86.0
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant log output
|
||||||
|
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: repo_url
|
||||||
|
attributes:
|
||||||
|
label: Repository/Source Code link where this issue can be reproduced
|
||||||
|
description: Please add url of the repository where this issue can be reproduced
|
||||||
|
placeholder: https://github.com/<username>/<repo name>
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: Code of Conduct
|
||||||
|
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme).
|
||||||
|
options:
|
||||||
|
- label: I agree to follow this project's Code of Conduct
|
||||||
|
required: true
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: PaperMod Discussions
|
||||||
|
url: https://github.com/adityatelange/hugo-PaperMod/discussions
|
||||||
|
about: Please ask and answer questions/doubts here, DO NOT open an issue for questions.
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
name: Enhancement 🚀
|
||||||
|
description: Propose a new feature or change for enhancing the experience.
|
||||||
|
title: "[Enhancement]: "
|
||||||
|
labels: ["enhancement", "triage"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this enhancement form :)
|
||||||
|
- Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question.
|
||||||
|
- You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users
|
||||||
|
- Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation.
|
||||||
|
- Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions.
|
||||||
|
- Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created.
|
||||||
|
- type: textarea
|
||||||
|
id: what_happened
|
||||||
|
attributes:
|
||||||
|
label: What you'd like to propose?
|
||||||
|
description:
|
||||||
|
placeholder:
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: Code of Conduct
|
||||||
|
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme).
|
||||||
|
options:
|
||||||
|
- label: I agree to follow this project's Code of Conduct
|
||||||
|
required: true
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
## READ BEFORE OPENING A PR
|
||||||
|
|
||||||
|
Thank you for contributing to hugo-PaperMod!
|
||||||
|
Please fill out the following questions to make it easier for us to review your
|
||||||
|
changes. You do not need to check all the boxes below.
|
||||||
|
|
||||||
|
**NOTE**: PaperMod does not have any external dependencies fetched from 3rd party
|
||||||
|
CDN servers. However we do have custom Head/Footer extender templates which you can use
|
||||||
|
to add those to your website.
|
||||||
|
https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#custom-head--footer
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
**What does this PR change? What problem does it solve?**
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe the changes and their purpose here, as detailed as and if needed.
|
||||||
|
|
||||||
|
Please do not add 2 unrelated changes in a single PR as it is difficult to track/revert those in future.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
**Was the change discussed in an issue or in the Discussions before?**
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Link issues and relevant Discussions posts here. Please create an issue or start a Discussion before opening a PR if you have not done so already.
|
||||||
|
|
||||||
|
If this PR resolves an issue on GitHub, use "Closes #1234" so that the issue
|
||||||
|
is closed automatically when this PR is merged.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
## PR Checklist
|
||||||
|
|
||||||
|
- [ ] This change adds/updates translations and I have used the [template present here](https://github.com/adityatelange/hugo-PaperMod/wiki/Translations#want-to-add-your-language-).
|
||||||
|
- [ ] I have enabled [maintainer edits for this PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
||||||
|
- [ ] I have verified that the code works as described/as intended.
|
||||||
|
- [ ] This change adds a Social Icon which has a permissive license to use it.
|
||||||
|
- [ ] This change **does not** include any CDN resources/links.
|
||||||
|
- [ ] This change **does not** include any unrelated scripts such as bash and python scripts.
|
||||||
|
- [ ] This change updates the overridden internal templates from HUGO's repository.
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
name: Build Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "images/**"
|
||||||
|
- "LICENSE"
|
||||||
|
- "README.md"
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- exampleSite
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- "images/**"
|
||||||
|
- "LICENSE"
|
||||||
|
- "README.md"
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- exampleSite
|
||||||
|
workflow_dispatch:
|
||||||
|
# manual run
|
||||||
|
inputs:
|
||||||
|
hugoVersion:
|
||||||
|
description: "Hugo Version"
|
||||||
|
required: false
|
||||||
|
default: "0.146.0"
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
# min_version from theme.toml
|
||||||
|
HUGO_VERSION: ${{ github.event.inputs.hugoVersion || '0.146.0' }}
|
||||||
|
steps:
|
||||||
|
- name: Install Hugo CLI
|
||||||
|
run: |
|
||||||
|
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.deb \
|
||||||
|
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: exampleSite
|
||||||
|
|
||||||
|
- name: Get Theme
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
|
- name: Update theme to Latest commit
|
||||||
|
run: git submodule update --remote --merge
|
||||||
|
|
||||||
|
- name: Build with Hugo
|
||||||
|
run: hugo --buildDrafts --gc
|
||||||
+82
@@ -0,0 +1,82 @@
|
|||||||
|
name: Deploy Hugo PaperMod Demo to Pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- "images/**"
|
||||||
|
- "LICENSE"
|
||||||
|
- "README.md"
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- exampleSite
|
||||||
|
workflow_dispatch:
|
||||||
|
# manual run
|
||||||
|
inputs:
|
||||||
|
hugoVersion:
|
||||||
|
description: "Hugo Version"
|
||||||
|
required: false
|
||||||
|
default: "latest"
|
||||||
|
|
||||||
|
# Allow one concurrent deployment
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
# Default to bash
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Build job
|
||||||
|
build:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
HUGO_VERSION: ${{ github.event.inputs.hugoVersion || 'latest' }}
|
||||||
|
steps:
|
||||||
|
- name: Resolve Hugo version
|
||||||
|
run: |
|
||||||
|
if [ "${HUGO_VERSION}" = "latest" ]; then
|
||||||
|
HUGO_VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep '"tag_name"' | sed 's/.*"v\([^"]*\)".*/\1/')
|
||||||
|
echo "HUGO_VERSION=${HUGO_VERSION}" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
- name: Install Hugo CLI
|
||||||
|
run: |
|
||||||
|
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.deb \
|
||||||
|
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: exampleSite
|
||||||
|
- name: Setup Pages
|
||||||
|
id: pages
|
||||||
|
uses: actions/configure-pages@v6
|
||||||
|
- name: Get Theme
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
- name: Update theme to Latest commit
|
||||||
|
run: git submodule update --remote --merge
|
||||||
|
- name: Build with Hugo
|
||||||
|
run: |
|
||||||
|
hugo \
|
||||||
|
--buildDrafts --gc \
|
||||||
|
--baseURL ${{ steps.pages.outputs.base_url }}
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v5
|
||||||
|
with:
|
||||||
|
path: ./public
|
||||||
|
# Deployment job
|
||||||
|
deploy:
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v5
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
|
Copyright (c) 2021-2026 adityatelange
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
# Hugo PaperMod
|
||||||
|
|
||||||
|
**A fast, clean, and responsive theme for [Hugo](https://gohugo.io/).**
|
||||||
|
|
||||||
|
[](https://themes.gohugo.io/themes/hugo-papermod/)
|
||||||
|
[](https://github.com/gohugoio/hugo/releases/tag/v0.146.0)
|
||||||
|
[](https://discord.gg/ahpmTvhVmp)
|
||||||
|
|
||||||
|
> Based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3), with additional features and customization options.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Live Demo</td>
|
||||||
|
<td><a href="https://adityatelange.github.io/hugo-PaperMod/">adityatelange.github.io/hugo-PaperMod</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Documentation 📚</td>
|
||||||
|
<td><a href="https://github.com/adityatelange/hugo-PaperMod/wiki">Github Wiki</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Example Site Source</td>
|
||||||
|
<td><a href="https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite">exampleSite branch</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://www.star-history.com/adityatelange/hugo-papermod"><img src="https://api.star-history.com/badge?repo=adityatelange/hugo-PaperMod&theme=dark" alt="Star History Rank" /></a></td>
|
||||||
|
<td><a href="https://ko-fi.com/H2H229ZWH"><img src="https://ko-fi.com/img/githubbutton_sm.svg" alt="ko-fi" /></a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://user-images.githubusercontent.com/21258296/114303440-bfc0ae80-9aeb-11eb-8cfa-48a4bb385a6d.png" alt="Mockup image" title="Mockup"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features 💥
|
||||||
|
|
||||||
|
`☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive`
|
||||||
|
|
||||||
|
- **Asset pipeline** -- Hugo's built-in asset generator with fingerprinting, bundling, and minification.
|
||||||
|
- **Three layout modes** -- [Regular](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#regular-mode-default-mode), [Home-Info](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode), and [Profile](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode).
|
||||||
|
- **Light and dark themes** -- Automatic switching based on browser preference, plus a manual toggle.
|
||||||
|
- **Multilingual support** -- Includes a built-in language selector.
|
||||||
|
- **Search** -- Client-side search powered by Fuse.js.
|
||||||
|
- **SEO optimized** -- Open Graph, Twitter Cards, and Schema.org structured data out of the box.
|
||||||
|
- **Cover images** -- Per-post cover images with responsive image support.
|
||||||
|
- **Table of contents** -- Auto-generated from heading structure.
|
||||||
|
- **Multiple authors** -- Native support for multi-author sites.
|
||||||
|
- **Social icons and share buttons** -- Configurable social links and per-post sharing.
|
||||||
|
- **Breadcrumb navigation**
|
||||||
|
- **Post archives and taxonomies**
|
||||||
|
- **Code block copy buttons** -- One-click copying with Chroma syntax highlighting.
|
||||||
|
- **Related post suggestions**
|
||||||
|
- **Zero JS build dependencies** -- No webpack, Node.js, or other tooling required.
|
||||||
|
|
||||||
|
| Topic | Description |
|
||||||
|
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
||||||
|
| **[Installation guide](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)** | Detailed installation and update instructions |
|
||||||
|
| **[Features wiki page](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)** | In-depth explanations of all features |
|
||||||
|
| **[FAQ wiki](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)** | Common questions and configuration walkthroughs |
|
||||||
|
| **[Icons wiki](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)** | Documentation for social icons and share icons |
|
||||||
|
| **[Variables wiki](https://github.com/adityatelange/hugo-PaperMod/wiki/Variables)** | List of all available template variables |
|
||||||
|
| **[Overiding templates](https://github.com/adityatelange/hugo-PaperMod/wiki/Template_Overrides)** | Guide to customizing templates without forking |
|
||||||
|
| **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)** | Detailed history of releases |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Performance ☄️
|
||||||
|
|
||||||
|
PaperMod consistently scores near-perfect results on [Pagespeed Insights](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/).
|
||||||
|
|
||||||
|
<img width="481" height="116" alt="image" src="https://github.com/user-attachments/assets/497d831b-d143-4a46-bc11-b1d7f8ef4a83" />
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Support 🫶
|
||||||
|
|
||||||
|
- Star this repository to show your support.
|
||||||
|
- Share PaperMod with others who might find it useful.
|
||||||
|
- Sponsor the project on [GitHub Sponsors](https://github.com/sponsors/adityatelange) or [Ko-Fi](https://ko-fi.com/adityatelange).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Special Thanks 🌟
|
||||||
|
|
||||||
|
- [Highlight.js](https://github.com/highlightjs/highlight.js)
|
||||||
|
- [Fuse.js](https://github.com/krisk/fuse)
|
||||||
|
- [Feather Icons](https://github.com/feathericons/feather)
|
||||||
|
- [Simple Icons](https://github.com/simple-icons/simple-icons)
|
||||||
|
- All contributors and supporters
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stargazers 📈
|
||||||
|
|
||||||
|
[](https://starchart.cc/adityatelange/hugo-PaperMod)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
.not-found {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 80%;
|
||||||
|
font-size: 160px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
.archive-posts {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-year {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-year:not(:last-of-type) {
|
||||||
|
border-bottom: 2px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-month {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-month-header {
|
||||||
|
margin: 25px 0;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-month:not(:last-of-type) {
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-entry {
|
||||||
|
position: relative;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-entry-title {
|
||||||
|
margin: 5px 0;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-count,
|
||||||
|
.archive-meta {
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
.footer,
|
||||||
|
.top-link {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
max-width: calc(var(--main-width) + var(--gap) * 2);
|
||||||
|
margin: auto;
|
||||||
|
padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap);
|
||||||
|
text-align: center;
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer span {
|
||||||
|
margin-inline-start: 1px;
|
||||||
|
margin-inline-end: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer span:last-child {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer a {
|
||||||
|
color: inherit;
|
||||||
|
text-underline-offset: 0.25rem;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-link {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 4rem;
|
||||||
|
right: 2rem;
|
||||||
|
z-index: 99;
|
||||||
|
background: var(--tertiary);
|
||||||
|
width: 2.5rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 64px;
|
||||||
|
transition: visibility .3s, opacity .3s cubic-bezier(0.4, 0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-link,
|
||||||
|
.top-link svg {
|
||||||
|
filter: drop-shadow(0px 0px 0px var(--theme));
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer a:hover,
|
||||||
|
.top-link:hover {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
.header-nav {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
max-width: calc(var(--nav-width) + var(--gap) * 2);
|
||||||
|
margin: auto;
|
||||||
|
line-height: var(--header-height);
|
||||||
|
padding: 0 var(--gap);
|
||||||
|
column-gap: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-nav a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo,
|
||||||
|
.menu {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
align-items: center;
|
||||||
|
column-gap: 0.55rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo a {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
column-gap: 0.55rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo a img,
|
||||||
|
.logo a svg {
|
||||||
|
pointer-events: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-toggle {
|
||||||
|
padding: 0 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .moon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="light"] .sun {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-switches {
|
||||||
|
display: inline-flex;
|
||||||
|
gap: 0.4rem;
|
||||||
|
align-items: inherit;
|
||||||
|
min-height: stretch;
|
||||||
|
flex-wrap: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-switches>* {
|
||||||
|
min-height: inherit;
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sep {
|
||||||
|
color: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-menu * {
|
||||||
|
display: inherit;
|
||||||
|
min-height: inherit;
|
||||||
|
align-items: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-menu a {
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 0 0.4rem;
|
||||||
|
display: inline-flex
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
list-style: none;
|
||||||
|
word-break: keep-all;
|
||||||
|
overflow-x: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
column-gap: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu a {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu .active {
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 0.3rem;
|
||||||
|
text-decoration-thickness: 2px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
.main {
|
||||||
|
position: relative;
|
||||||
|
min-height: calc(100vh - var(--header-height) - var(--footer-height));
|
||||||
|
max-width: calc(var(--main-width) + var(--gap) * 2);
|
||||||
|
margin: auto;
|
||||||
|
padding: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header h1 {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination a {
|
||||||
|
color: var(--theme);
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 36px;
|
||||||
|
background: var(--primary);
|
||||||
|
border-radius: calc(36px / 2);
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination .next {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.social-icons a {
|
||||||
|
display: inline-flex;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icons a svg {
|
||||||
|
height: 26px;
|
||||||
|
width: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.highlight,
|
||||||
|
pre {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-code {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
right: 4px;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
background: rgba(78, 78, 78, 0.8);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 0 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.highlight:hover .copy-code,
|
||||||
|
pre:hover .copy-code {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
.md-content h3,
|
||||||
|
.md-content h4,
|
||||||
|
.md-content h5,
|
||||||
|
.md-content h6 {
|
||||||
|
margin: 24px 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h1 {
|
||||||
|
margin: 40px auto 32px;
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h2 {
|
||||||
|
margin: 32px auto 24px;
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h3 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h4 {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h5 {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h6 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content a:not(.anchor) {
|
||||||
|
text-underline-offset: 0.3rem;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content del {
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content dl:not(:last-child),
|
||||||
|
.md-content ol:not(:last-child),
|
||||||
|
.md-content p:not(:last-child),
|
||||||
|
.md-content figure:not(:last-child),
|
||||||
|
.md-content ul:not(:last-child) {
|
||||||
|
margin-bottom: var(--content-gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content ol,
|
||||||
|
.md-content ul {
|
||||||
|
padding-inline-start: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content li {
|
||||||
|
margin-top: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content li p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content dl {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content dt {
|
||||||
|
width: 25%;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content dd {
|
||||||
|
width: 75%;
|
||||||
|
margin-inline-start: 0;
|
||||||
|
padding-inline-start: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content dd~dd,
|
||||||
|
.md-content dt~dt {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content table {
|
||||||
|
margin-bottom: var(--content-gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content table th,
|
||||||
|
.md-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
|
||||||
|
min-width: 80px;
|
||||||
|
padding: 6px 13px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content table th {
|
||||||
|
text-align: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content table:not(.highlighttable) td code:only-child {
|
||||||
|
margin: auto 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlight table {
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlight:not(table) {
|
||||||
|
margin-bottom: var(--content-gap);
|
||||||
|
background: var(--code-block-bg) !important;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content li>.highlight {
|
||||||
|
margin-inline-end: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content ul pre {
|
||||||
|
margin-inline-start: calc(var(--gap) * -2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlight pre {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlighttable {
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlighttable td:first-child {
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlighttable td .linenodiv {
|
||||||
|
padding-inline-end: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content .highlighttable td .highlight,
|
||||||
|
.md-content .highlighttable td .linenodiv pre {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-content code {
|
||||||
|
padding: 0.2rem 0.3rem;
|
||||||
|
font-size: 0.78em;
|
||||||
|
line-height: 1.5;
|
||||||
|
background: var(--code-bg);
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content pre code {
|
||||||
|
display: grid;
|
||||||
|
margin: auto 0;
|
||||||
|
padding: 10px;
|
||||||
|
color: rgb(213, 213, 214);
|
||||||
|
background: var(--code-block-bg) !important;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
overflow-x: auto;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content blockquote {
|
||||||
|
margin: 1rem 0;
|
||||||
|
padding-inline-start: 1rem;
|
||||||
|
border-inline-start: 0.3rem solid var(--content);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content hr {
|
||||||
|
margin: 30px 0;
|
||||||
|
height: 2px;
|
||||||
|
background: var(--tertiary);
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content iframe {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content img {
|
||||||
|
border-radius: var(--radius);
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content img[src*="#center"] {
|
||||||
|
margin: 1rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content figure.align-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content figure>figcaption {
|
||||||
|
color: var(--primary);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 8px 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content figure>figcaption>p {
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content h1:hover .anchor,
|
||||||
|
.md-content h2:hover .anchor,
|
||||||
|
.md-content h3:hover .anchor,
|
||||||
|
.md-content h4:hover .anchor,
|
||||||
|
.md-content h5:hover .anchor,
|
||||||
|
.md-content h6:hover .anchor {
|
||||||
|
display: inline-flex;
|
||||||
|
color: var(--secondary);
|
||||||
|
margin-inline-start: 0.5em;
|
||||||
|
font-weight: 500;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.anchor:hover {
|
||||||
|
color: var(--content) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-content img.in-text {
|
||||||
|
display: inline;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
mark {
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
audio {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
overflow: hidden;
|
||||||
|
height: 2.5rem;
|
||||||
|
margin-bottom: var(--content-gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
audio::-webkit-media-controls-enclosure {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
video {
|
||||||
|
border: 1px solid var(--code-bg);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
.first-entry {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 320px;
|
||||||
|
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-entry .entry-header {
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-entry .entry-header h1 {
|
||||||
|
font-size: 34px;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-entry .entry-header h2 {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-entry .entry-content {
|
||||||
|
margin: 14px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-entry .entry-footer {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-info .entry-content {
|
||||||
|
--content-gap: 0.5rem;
|
||||||
|
-webkit-line-clamp: unset;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-info .social-icons a:first-of-type {
|
||||||
|
padding-inline-start: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.post-entry {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: var(--gap);
|
||||||
|
padding: var(--gap);
|
||||||
|
background: var(--entry);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
transition: transform 0.25s ease;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-entry:hover,
|
||||||
|
.post-entry:focus-within {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
border-color: var(--tertiary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag-entry .entry-cover {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-header h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-content {
|
||||||
|
margin: 8px 0;
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-info .entry-content p {
|
||||||
|
margin-block-start: 1em;
|
||||||
|
margin-block-end: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-footer {
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-link {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-hint {
|
||||||
|
color: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-hint-parent {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-cover {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: var(--gap);
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-cover img {
|
||||||
|
border-radius: var(--radius);
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-cover a {
|
||||||
|
text-underline-offset: 0.3rem;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
@@ -0,0 +1,215 @@
|
|||||||
|
.page-header,
|
||||||
|
.post-header {
|
||||||
|
margin: 24px auto var(--content-gap) auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-title {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-description {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta,
|
||||||
|
.breadcrumbs {
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs a {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs svg {
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.i18n_list {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta .i18n_list li {
|
||||||
|
list-style: none;
|
||||||
|
margin: auto 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta a,
|
||||||
|
.toc a:hover {
|
||||||
|
text-underline-offset: 0.3rem;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta a {
|
||||||
|
color: var(--secondary);
|
||||||
|
text-decoration-style: dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
details.toc {
|
||||||
|
margin-bottom: var(--content-gap);
|
||||||
|
background: var(--code-bg);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] details.toc {
|
||||||
|
background: var(--entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
details.toc summary {
|
||||||
|
padding: 0.3rem 1.2rem;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
details summary {
|
||||||
|
cursor: pointer;
|
||||||
|
display: list-item;
|
||||||
|
width: 100%;
|
||||||
|
margin-inline-start: 0;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
details .title {
|
||||||
|
display: inline;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-inline-start: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
details {
|
||||||
|
interpolate-size: allow-keywords;
|
||||||
|
}
|
||||||
|
|
||||||
|
details::details-content {
|
||||||
|
height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
overflow: clip;
|
||||||
|
transition: height 150ms ease,
|
||||||
|
opacity 150ms ease,
|
||||||
|
content-visibility 150ms allow-discrete;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open]::details-content {
|
||||||
|
height: auto;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
details .inner {
|
||||||
|
margin: 0 2.4rem;
|
||||||
|
padding-bottom: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
details li ul {
|
||||||
|
margin-inline-start: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-content {
|
||||||
|
color: var(--content);
|
||||||
|
margin: 30px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-footer {
|
||||||
|
margin-top: var(--content-gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-footer>* {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags li {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags a,
|
||||||
|
.share-buttons,
|
||||||
|
.paginav {
|
||||||
|
border-radius: var(--radius);
|
||||||
|
background: var(--code-bg);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags a {
|
||||||
|
display: block;
|
||||||
|
padding: 0 14px;
|
||||||
|
color: var(--secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 34px;
|
||||||
|
background: var(--code-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags a:hover,
|
||||||
|
.paginav a:hover {
|
||||||
|
background: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons {
|
||||||
|
padding: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
overflow-x: auto;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons li,
|
||||||
|
.share-buttons a {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons a:not(:last-of-type) {
|
||||||
|
margin-inline-end: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginav {
|
||||||
|
display: flex;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginav .title {
|
||||||
|
letter-spacing: 1px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginav a {
|
||||||
|
width: 50%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.5rem;
|
||||||
|
padding: 0.8rem;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginav span:hover:not(.title) {
|
||||||
|
text-underline-offset: 0.2rem;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paginav .next {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
[dir="rtl"] .paginav .next {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1>a>svg {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
.buttons,
|
||||||
|
.main .profile {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .profile {
|
||||||
|
align-items: center;
|
||||||
|
min-height: calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .profile_inner {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile img {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttons {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
max-width: 400px;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
background: var(--tertiary);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 0.4rem 0.8rem;
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
.searchbox input {
|
||||||
|
padding: 4px 10px;
|
||||||
|
width: 100%;
|
||||||
|
color: var(--primary);
|
||||||
|
font-weight: bold;
|
||||||
|
border: 2px solid var(--tertiary);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchResults li {
|
||||||
|
list-style: none;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 10px 15px;
|
||||||
|
position: relative;
|
||||||
|
font-weight: 500;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background: var(--entry);
|
||||||
|
transition: transform .25s ease;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchResults {
|
||||||
|
margin: var(--content-gap) 0;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchResults li:hover,
|
||||||
|
.searchResults li:focus-within {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
border-color: var(--tertiary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchResults li .entry-link:focus {
|
||||||
|
outline: 2px solid var(--secondary);
|
||||||
|
outline-offset: -2px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
.terms-tags {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1em;
|
||||||
|
margin-top: var(--content-gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.terms-tags li {
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.terms-tags a {
|
||||||
|
display: block;
|
||||||
|
padding: 4px 10px;
|
||||||
|
background: var(--tertiary);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
transition: transform 0.1s;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/*
|
||||||
|
PaperMod v8+
|
||||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||||
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
|
Copyright (c) 2021-2026 adityatelange
|
||||||
|
*/
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
*,
|
||||||
|
::after,
|
||||||
|
::before {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
overflow-y: scroll;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a,
|
||||||
|
button,
|
||||||
|
body,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.6;
|
||||||
|
word-break: break-word;
|
||||||
|
background: var(--theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
main,
|
||||||
|
nav,
|
||||||
|
section,
|
||||||
|
table {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body,
|
||||||
|
figure,
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
overflow-x: auto;
|
||||||
|
word-break: keep-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
padding: 0;
|
||||||
|
font: inherit;
|
||||||
|
background: 0 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button,
|
||||||
|
input[type=button],
|
||||||
|
input[type=submit] {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:-webkit-autofill,
|
||||||
|
textarea:-webkit-autofill {
|
||||||
|
box-shadow: 0 0 0 50px var(--theme) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
:root {
|
||||||
|
--gap: 24px;
|
||||||
|
--content-gap: 20px;
|
||||||
|
--nav-width: 1024px;
|
||||||
|
--main-width: 720px;
|
||||||
|
--header-height: 60px;
|
||||||
|
--footer-height: 60px;
|
||||||
|
--radius: 8px;
|
||||||
|
--theme: rgb(255, 255, 255);
|
||||||
|
--entry: rgb(255, 255, 255);
|
||||||
|
--primary: rgb(30, 30, 30);
|
||||||
|
--secondary: rgb(108, 108, 108);
|
||||||
|
--tertiary: rgb(214, 214, 214);
|
||||||
|
--content: rgb(31, 31, 31);
|
||||||
|
--code-block-bg: rgb(28, 29, 33);
|
||||||
|
--code-bg: rgb(245, 245, 245);
|
||||||
|
--border: rgb(238, 238, 238);
|
||||||
|
color-scheme: light;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root[data-theme="dark"] {
|
||||||
|
--theme: rgb(29, 30, 32);
|
||||||
|
--entry: rgb(46, 46, 51);
|
||||||
|
--primary: rgb(218, 218, 219);
|
||||||
|
--secondary: rgb(155, 156, 157);
|
||||||
|
--tertiary: rgb(65, 66, 68);
|
||||||
|
--content: rgb(196, 196, 197);
|
||||||
|
--code-block-bg: rgb(46, 46, 51);
|
||||||
|
--code-bg: rgb(55, 56, 62);
|
||||||
|
--border: rgb(51, 51, 51);
|
||||||
|
color-scheme: dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
background: var(--code-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-theme="dark"] .list {
|
||||||
|
background: var(--theme);
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
/* theme-vars */
|
||||||
|
:root {
|
||||||
|
--gap: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* profile-mode */
|
||||||
|
.profile img {
|
||||||
|
transform: scale(0.85);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* post-entry */
|
||||||
|
.first-entry {
|
||||||
|
min-height: 260px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* archive */
|
||||||
|
.archive-month {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.archive-year {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* footer */
|
||||||
|
.footer {
|
||||||
|
padding: calc((var(--footer-height) - var(--gap) - 10px) / 2) var(--gap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* footer */
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
.list .top-link {
|
||||||
|
transform: translateY(-5rem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 340px) {
|
||||||
|
.share-buttons {
|
||||||
|
justify-content: unset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion) {
|
||||||
|
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
|
||||||
|
.terms-tags a:active,
|
||||||
|
.button:active,
|
||||||
|
.post-entry:active,
|
||||||
|
.top-link,
|
||||||
|
.searchResults .focus,
|
||||||
|
.searchResults li:active {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
/*
|
||||||
|
This is just a placeholder blank stylesheet so as to support adding custom styles budled with theme's default styles
|
||||||
|
|
||||||
|
Read https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#bundling-custom-css-with-themes-assets for more info
|
||||||
|
*/
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
.chroma {
|
||||||
|
background-color: unset !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chroma .hl {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chroma .lnt {
|
||||||
|
padding: 0 0 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight pre.chroma code {
|
||||||
|
padding: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight pre.chroma .line .cl,
|
||||||
|
.chroma .ln {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chroma .lntd:last-of-type {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/* Background */ .bg { color: #cad3f5; background-color: #24273a; }
|
||||||
|
/* PreWrapper */ .chroma { color: #cad3f5; background-color: #24273a; }
|
||||||
|
/* Other */ .chroma .x { }
|
||||||
|
/* Error */ .chroma .err { color: #ed8796 }
|
||||||
|
/* CodeLine */ .chroma .cl { }
|
||||||
|
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||||
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineHighlight */ .chroma .hl { background-color: #474733 }
|
||||||
|
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
|
||||||
|
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
|
||||||
|
/* Line */ .chroma .line { display: flex; }
|
||||||
|
/* Keyword */ .chroma .k { color: #c6a0f6 }
|
||||||
|
/* KeywordConstant */ .chroma .kc { color: #f5a97f }
|
||||||
|
/* KeywordDeclaration */ .chroma .kd { color: #ed8796 }
|
||||||
|
/* KeywordNamespace */ .chroma .kn { color: #8bd5ca }
|
||||||
|
/* KeywordPseudo */ .chroma .kp { color: #c6a0f6 }
|
||||||
|
/* KeywordReserved */ .chroma .kr { color: #c6a0f6 }
|
||||||
|
/* KeywordType */ .chroma .kt { color: #ed8796 }
|
||||||
|
/* Name */ .chroma .n { }
|
||||||
|
/* NameAttribute */ .chroma .na { color: #8aadf4 }
|
||||||
|
/* NameBuiltin */ .chroma .nb { color: #91d7e3 }
|
||||||
|
/* NameBuiltinPseudo */ .chroma .bp { color: #91d7e3 }
|
||||||
|
/* NameClass */ .chroma .nc { color: #eed49f }
|
||||||
|
/* NameConstant */ .chroma .no { color: #eed49f }
|
||||||
|
/* NameDecorator */ .chroma .nd { color: #8aadf4; font-weight: bold }
|
||||||
|
/* NameEntity */ .chroma .ni { color: #8bd5ca }
|
||||||
|
/* NameException */ .chroma .ne { color: #f5a97f }
|
||||||
|
/* NameFunction */ .chroma .nf { color: #8aadf4 }
|
||||||
|
/* NameFunctionMagic */ .chroma .fm { color: #8aadf4 }
|
||||||
|
/* NameLabel */ .chroma .nl { color: #91d7e3 }
|
||||||
|
/* NameNamespace */ .chroma .nn { color: #f5a97f }
|
||||||
|
/* NameOther */ .chroma .nx { }
|
||||||
|
/* NameProperty */ .chroma .py { color: #f5a97f }
|
||||||
|
/* NameTag */ .chroma .nt { color: #c6a0f6 }
|
||||||
|
/* NameVariable */ .chroma .nv { color: #f4dbd6 }
|
||||||
|
/* NameVariableClass */ .chroma .vc { color: #f4dbd6 }
|
||||||
|
/* NameVariableGlobal */ .chroma .vg { color: #f4dbd6 }
|
||||||
|
/* NameVariableInstance */ .chroma .vi { color: #f4dbd6 }
|
||||||
|
/* NameVariableMagic */ .chroma .vm { color: #f4dbd6 }
|
||||||
|
/* Literal */ .chroma .l { }
|
||||||
|
/* LiteralDate */ .chroma .ld { }
|
||||||
|
/* LiteralString */ .chroma .s { color: #a6da95 }
|
||||||
|
/* LiteralStringAffix */ .chroma .sa { color: #ed8796 }
|
||||||
|
/* LiteralStringBacktick */ .chroma .sb { color: #a6da95 }
|
||||||
|
/* LiteralStringChar */ .chroma .sc { color: #a6da95 }
|
||||||
|
/* LiteralStringDelimiter */ .chroma .dl { color: #8aadf4 }
|
||||||
|
/* LiteralStringDoc */ .chroma .sd { color: #6e738d }
|
||||||
|
/* LiteralStringDouble */ .chroma .s2 { color: #a6da95 }
|
||||||
|
/* LiteralStringEscape */ .chroma .se { color: #8aadf4 }
|
||||||
|
/* LiteralStringHeredoc */ .chroma .sh { color: #6e738d }
|
||||||
|
/* LiteralStringInterpol */ .chroma .si { color: #a6da95 }
|
||||||
|
/* LiteralStringOther */ .chroma .sx { color: #a6da95 }
|
||||||
|
/* LiteralStringRegex */ .chroma .sr { color: #8bd5ca }
|
||||||
|
/* LiteralStringSingle */ .chroma .s1 { color: #a6da95 }
|
||||||
|
/* LiteralStringSymbol */ .chroma .ss { color: #a6da95 }
|
||||||
|
/* LiteralNumber */ .chroma .m { color: #f5a97f }
|
||||||
|
/* LiteralNumberBin */ .chroma .mb { color: #f5a97f }
|
||||||
|
/* LiteralNumberFloat */ .chroma .mf { color: #f5a97f }
|
||||||
|
/* LiteralNumberHex */ .chroma .mh { color: #f5a97f }
|
||||||
|
/* LiteralNumberInteger */ .chroma .mi { color: #f5a97f }
|
||||||
|
/* LiteralNumberIntegerLong */ .chroma .il { color: #f5a97f }
|
||||||
|
/* LiteralNumberOct */ .chroma .mo { color: #f5a97f }
|
||||||
|
/* Operator */ .chroma .o { color: #91d7e3; font-weight: bold }
|
||||||
|
/* OperatorWord */ .chroma .ow { color: #91d7e3; font-weight: bold }
|
||||||
|
/* Punctuation */ .chroma .p { }
|
||||||
|
/* Comment */ .chroma .c { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentHashbang */ .chroma .ch { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentMultiline */ .chroma .cm { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentSingle */ .chroma .c1 { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentSpecial */ .chroma .cs { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentPreproc */ .chroma .cp { color: #6e738d; font-style: italic }
|
||||||
|
/* CommentPreprocFile */ .chroma .cpf { color: #6e738d; font-weight: bold; font-style: italic }
|
||||||
|
/* Generic */ .chroma .g { }
|
||||||
|
/* GenericDeleted */ .chroma .gd { color: #ed8796; background-color: #363a4f }
|
||||||
|
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||||
|
/* GenericError */ .chroma .gr { color: #ed8796 }
|
||||||
|
/* GenericHeading */ .chroma .gh { color: #f5a97f; font-weight: bold }
|
||||||
|
/* GenericInserted */ .chroma .gi { color: #a6da95; background-color: #363a4f }
|
||||||
|
/* GenericOutput */ .chroma .go { }
|
||||||
|
/* GenericPrompt */ .chroma .gp { }
|
||||||
|
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||||
|
/* GenericSubheading */ .chroma .gu { color: #f5a97f; font-weight: bold }
|
||||||
|
/* GenericTraceback */ .chroma .gt { color: #ed8796 }
|
||||||
|
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||||
|
/* TextWhitespace */ .chroma .w { }
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
import * as params from '@params';
|
||||||
|
|
||||||
|
const resList = document.getElementById('searchResults');
|
||||||
|
const sInput = document.getElementById('searchInput');
|
||||||
|
const searchBox = document.getElementById('searchbox');
|
||||||
|
|
||||||
|
let fuse;
|
||||||
|
let currentElement = null;
|
||||||
|
let firstResult = null;
|
||||||
|
let lastResult = null;
|
||||||
|
|
||||||
|
const defaultFuseOptions = {
|
||||||
|
distance: 100,
|
||||||
|
threshold: 0.4,
|
||||||
|
ignoreLocation: true,
|
||||||
|
keys: ['title', 'permalink', 'summary', 'content']
|
||||||
|
};
|
||||||
|
|
||||||
|
const buildFuseOptions = () => {
|
||||||
|
if (!params.fuseOpts) {
|
||||||
|
return defaultFuseOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isCaseSensitive: params.fuseOpts.iscasesensitive ?? false,
|
||||||
|
includeScore: params.fuseOpts.includescore ?? false,
|
||||||
|
includeMatches: params.fuseOpts.includematches ?? false,
|
||||||
|
minMatchCharLength: params.fuseOpts.minmatchcharlength ?? 1,
|
||||||
|
shouldSort: params.fuseOpts.shouldsort ?? true,
|
||||||
|
findAllMatches: params.fuseOpts.findallmatches ?? false,
|
||||||
|
keys: params.fuseOpts.keys ?? defaultFuseOptions.keys,
|
||||||
|
location: params.fuseOpts.location ?? 0,
|
||||||
|
threshold: params.fuseOpts.threshold ?? defaultFuseOptions.threshold,
|
||||||
|
distance: params.fuseOpts.distance ?? defaultFuseOptions.distance,
|
||||||
|
ignoreLocation: params.fuseOpts.ignorelocation ?? defaultFuseOptions.ignoreLocation
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const debounce = (fn, delay) => {
|
||||||
|
let timeout;
|
||||||
|
return (...args) => {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = window.setTimeout(() => fn(...args), delay);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const reset = () => {
|
||||||
|
currentElement = null;
|
||||||
|
firstResult = null;
|
||||||
|
lastResult = null;
|
||||||
|
resList.innerHTML = '';
|
||||||
|
sInput.value = '';
|
||||||
|
sInput.focus();
|
||||||
|
};
|
||||||
|
|
||||||
|
const setActiveResult = (element) => {
|
||||||
|
document.querySelectorAll('.focus').forEach((item) => item.classList.remove('focus'));
|
||||||
|
|
||||||
|
if (!element) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.focus();
|
||||||
|
element.parentElement?.classList.add('focus');
|
||||||
|
currentElement = element;
|
||||||
|
};
|
||||||
|
|
||||||
|
const renderResults = (results) => {
|
||||||
|
if (!Array.isArray(results) || results.length === 0) {
|
||||||
|
resList.innerHTML = '';
|
||||||
|
firstResult = lastResult = currentElement = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fragment = document.createDocumentFragment();
|
||||||
|
|
||||||
|
for (const result of results) {
|
||||||
|
const li = document.createElement('li');
|
||||||
|
const titleText = document.createTextNode(result.item.title);
|
||||||
|
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||||
|
svg.setAttribute('width', '24');
|
||||||
|
svg.setAttribute('height', '24');
|
||||||
|
svg.setAttribute('viewBox', '0 0 24 24');
|
||||||
|
svg.setAttribute('fill', 'none');
|
||||||
|
svg.setAttribute('stroke', 'currentColor');
|
||||||
|
svg.setAttribute('stroke-width', '2');
|
||||||
|
svg.setAttribute('stroke-linecap', 'round');
|
||||||
|
svg.setAttribute('stroke-linejoin', 'round');
|
||||||
|
svg.classList.add('feather', 'feather-chevrons-right');
|
||||||
|
|
||||||
|
svg.innerHTML = '<polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline>';
|
||||||
|
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.className = 'entry-link';
|
||||||
|
link.href = result.item.permalink;
|
||||||
|
link.setAttribute('aria-label', result.item.title);
|
||||||
|
|
||||||
|
li.appendChild(titleText);
|
||||||
|
li.appendChild(svg);
|
||||||
|
li.appendChild(link);
|
||||||
|
fragment.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
resList.innerHTML = '';
|
||||||
|
resList.appendChild(fragment);
|
||||||
|
firstResult = resList.firstElementChild;
|
||||||
|
lastResult = resList.lastElementChild;
|
||||||
|
};
|
||||||
|
|
||||||
|
const performSearch = () => {
|
||||||
|
if (!fuse) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const query = sInput.value.trim();
|
||||||
|
if (!query) {
|
||||||
|
renderResults([]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchOptions = params.fuseOpts?.limit ? { limit: params.fuseOpts.limit } : undefined;
|
||||||
|
const results = searchOptions ? fuse.search(query, searchOptions) : fuse.search(query);
|
||||||
|
renderResults(results);
|
||||||
|
};
|
||||||
|
|
||||||
|
const initSearch = async () => {
|
||||||
|
if (!sInput || !resList) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sInput.disabled = false;
|
||||||
|
sInput.focus();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch('../index.json');
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Search index load failed: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
if (data) {
|
||||||
|
fuse = new Fuse(data, buildFuseOptions());
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('load', initSearch);
|
||||||
|
|
||||||
|
sInput?.addEventListener('input', debounce(performSearch, 150));
|
||||||
|
|
||||||
|
sInput?.addEventListener('search', () => {
|
||||||
|
if (!sInput.value) {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.addEventListener('keydown', (event) => {
|
||||||
|
const { key } = event;
|
||||||
|
const active = document.activeElement;
|
||||||
|
const isInSearchBox = searchBox?.contains(active);
|
||||||
|
|
||||||
|
if (key === 'Escape') {
|
||||||
|
reset();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!firstResult || !isInSearchBox) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key === 'ArrowDown') {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (active === sInput) {
|
||||||
|
setActiveResult(firstResult.querySelector('.entry-link'));
|
||||||
|
} else if (active?.parentElement !== lastResult) {
|
||||||
|
setActiveResult(active?.parentElement?.nextElementSibling?.querySelector('.entry-link'));
|
||||||
|
}
|
||||||
|
} else if (key === 'ArrowUp') {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if (active?.parentElement === firstResult) {
|
||||||
|
setActiveResult(sInput);
|
||||||
|
} else if (active !== sInput) {
|
||||||
|
setActiveResult(active?.parentElement?.previousElementSibling?.querySelector('.entry-link'));
|
||||||
|
}
|
||||||
|
} else if (key === 'ArrowRight') {
|
||||||
|
if (active?.matches?.('.entry-link')) {
|
||||||
|
active.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
+9
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
|||||||
|
/*
|
||||||
|
PaperMod v8+
|
||||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||||
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
|
Copyright (c) 2021-2026 adityatelange
|
||||||
|
*/
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
module github.com/adityatelange/hugo-PaperMod
|
||||||
|
|
||||||
|
go 1.16
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "السابق"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "التالي"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "دقيقة واحدة"
|
||||||
|
two: "دقيقتان"
|
||||||
|
few: "بضع ثوان"
|
||||||
|
zero: "الآن"
|
||||||
|
other: "دقائق {{ .Count }}"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "فهرس المحتوى"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "ترجمات أخرى"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "الصفحة الرئيسية"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "تم النسخ!"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "نسخ الكود"
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Папярэдняя"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Наступная"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
zero: "0 хвілін"
|
||||||
|
one: "1 хвіліна"
|
||||||
|
few: "{{ .Count }} хвіліны"
|
||||||
|
many: "{{ .Count }} хвілін"
|
||||||
|
other: "{{ .Count }} хвілін"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
zero: "няма слоў"
|
||||||
|
one: "1 слова"
|
||||||
|
few: "{{ .Count }} слова"
|
||||||
|
many: "{{ .Count }} слоў"
|
||||||
|
other: "{{ .Count }} слова"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Змест"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Пераклады"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Галоўная"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Рэдагаваць"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "капіяваць"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скапіявана!"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Предишна страница"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Следваща страница"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 мин"
|
||||||
|
other: "{{ .Count }} мин"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Съдържание"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Преводи"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "পূর্ববর্তী"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "পরবর্তী"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "১ মিনিট"
|
||||||
|
other: "{{ .Count }} মিনিট"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "১ টি শব্দ"
|
||||||
|
other: "{{ .Count }} টি শব্দ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "সূচিপত্র"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "অনুবাদসমূহ"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "হোম"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "সম্পাদনা করুন"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "কপি করুন"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "কপি হয়েছে!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Pàgina anterior"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Pàgina següent"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 minut"
|
||||||
|
other: "{{ .Count }} minuts"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "paraula"
|
||||||
|
other: "{{ .Count }} paraules"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Taula de Continguts"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduccions"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Inici"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiat!"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "پەڕەی پێشتر"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "پەڕەی دواتر"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 خولەک"
|
||||||
|
other: "{{ .Count }} خولەک"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "پێڕست"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "وەرگێڕانەکان"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ماڵەوە"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "لەبەری بگرەوە"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "لەبەر گیرایەوە!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Předchozí"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Další"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "slovo"
|
||||||
|
other: "{{ .Count }} slov"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Obsah"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Překlady"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Domů"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Upravit"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopírovat"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "zkopírováno!"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Forrige Side"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Næste Side"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Indholdsfortegnelse"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Oversættelser"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Start"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Rediger"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopieret!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Vorherige"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Nächste"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 Minute"
|
||||||
|
other: "{{ .Count }} Minuten"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "Wort"
|
||||||
|
other: "{{ .Count }} Wörter"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Inhaltsverzeichnis"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Übersetzungen"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Bearbeiten"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopieren"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopiert!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Προηγούμενο"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Επόμενο"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 λεπτό"
|
||||||
|
other: "{{ .Count }} λεπτά"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "λέξη"
|
||||||
|
other: "{{ .Count }} λέξεις"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Πίνακας Περιεχομένων"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Μεταφράσεις"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Αρχική"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Επεξεργασία"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "αντιγραφή"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "αντιγράφηκε!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Prev"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Next"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "word"
|
||||||
|
other: "{{ .Count }} words"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Table of Contents"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Translations"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Edit"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copy"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copied!"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "antaŭa paĝo"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "sekva paĝo"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Enhavo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "tradukoj"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ĉefpaĝo"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopii"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopiite!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Anterior"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Siguiente"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "palabra"
|
||||||
|
other: "{{ .Count }} palabras"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Tabla de Contenidos"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traducciones"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Inicio"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "¡copiado!"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "صفحه قبلی"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "صفحه بعدی"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "۱ دقیقه"
|
||||||
|
other: "{{ .Count }} دقیقه"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "فهرست مطالب"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "ترجمه ها"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "خانه"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "ویرایش"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "کپی"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "کپی شد!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Edellinen"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Seuraava"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} minuuttia"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "sana"
|
||||||
|
other: "{{ .Count }} sanaa"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Sisällysluettelo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Käännökset"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Etusivu"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Muokkaa"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopioi"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopioitu!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Précédent"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Suivant"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "mot"
|
||||||
|
other: "{{ .Count }} mots"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Table des matières"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traductions"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Accueil"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Modifier"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Copier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Copié !"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "הקודם"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "הבא"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "דקה אחת"
|
||||||
|
other: "{{ .Count }} דקות"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "מילה אחת"
|
||||||
|
other: "{{ .Count }} מילים"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "תוכן עניינים"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "תרגומים"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "בית"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "ערוך"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "העתק"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "הועתק!"
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "पिछला"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "अगला"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "एक मिनट"
|
||||||
|
other: "{{ .Count }} मिनट"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "सुधारें"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "विषय - सूची"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "अनुवाद"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Prethodna stranica"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Sljedeća stranica"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 minuta"
|
||||||
|
other: "{{ .Count }} minute"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "riječ"
|
||||||
|
other: "{{ .Count }} riječi"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Tablica Sadržaja"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Prijevodi"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Početna stranica"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Promjeni"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopiraj"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopirano!"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Előző oldal"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Következő oldal"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 perc"
|
||||||
|
other: "{{ .Count }} perc"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Tartalomjegyzék"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Fordítások"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Sebelumnya"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Selanjutnya"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 menit"
|
||||||
|
other: "{{ .Count }} menit"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "kata"
|
||||||
|
other: "{{ .Count }} kata"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Daftar isi"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Terjemahan"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Beranda"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Sunting"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "salin"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "disalin!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Precedente"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Successivo"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 minuto"
|
||||||
|
other: "{{ .Count }} minuti"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "parola"
|
||||||
|
other: "{{ .Count }} parole"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Indice contenuti"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduzioni"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Modifica"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copia"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiato!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "前へ"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "次へ"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 分"
|
||||||
|
other: "{{ .Count }} 分"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "文字"
|
||||||
|
other: "{{ .Count }} 文字"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "目次"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "言語"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ホーム"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "編集"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "コピー"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "コピーされました!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "이전 페이지"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "다음 페이지"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 분"
|
||||||
|
other: "{{ .Count }} 분"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "단어"
|
||||||
|
other: "{{ .Count }} 단어"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "목차"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "번역"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "홈"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "편집"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "복사"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "복사 완료!"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Rûpela Paş"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Rûpela Pêş"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 xulek"
|
||||||
|
other: "{{ .Count }} xulek"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Pêrist"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Wergeran"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Xanî"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Jê bigire"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Hat jêgirtin!"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Ѳмнѳх"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Дараах"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 МИН"
|
||||||
|
other: "{{ .Count }} МИН"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Агуулга"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Орчуулга"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Нүүр"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "хуулах"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "хуулсан!"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Halaman Sebelumnya"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Halaman Seterusnya"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 minit"
|
||||||
|
other: "{{ .Count }} minit"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Isi Kandungan"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Terjemahan"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Sunting"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Salin"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Disalin!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Vorige"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Volgende"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "woord"
|
||||||
|
other: "{{ .Count }} woorden"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Inhoudsopgave"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Vertalingen"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Startpagina"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Bewerk"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopieer"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "gekopieerd!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Forrige Side"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Neste Side"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "ord"
|
||||||
|
other: "{{ .Count }} ord"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Innholdsfortegnelse"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Oversettelser"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Hjem"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Rediger"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopiert!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Prec."
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Seg."
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "mot"
|
||||||
|
other: "{{ .Count }} motss"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Taula de contengut"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduccions"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Acuèlh"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Modificar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiat !"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "ਪਿਛਲਾ"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "ਅਗਲਾ"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 ਮਿੰਟ"
|
||||||
|
other: "{{ .Count }} ਮਿੰਟ"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "ਸ਼ਬਦ"
|
||||||
|
other: "{{ .Count }} ਸ਼ਬਦ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "ਤਤਕਰਾ"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "ਅਨੁਵਾਦ"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ਘਰ"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "ਸੋਧ"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "ਕਾਪੀ"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "ਕਾਪੀ ਕੀਤੀ ਗਈ!!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Poprzednia"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Następna"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "słowo"
|
||||||
|
other: "{{ .Count }} słów"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Spis treści"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Tłumaczenia"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Strona Główna"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Edytuj"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopiuj"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Skopiowano!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "پِچھلا"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "اگلا"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "ایک منٹ"
|
||||||
|
other: "مِنٹ {{ .Count }}"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "لفظ"
|
||||||
|
other: "لفظ {{ .Count }}"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "تتکرا"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "انوواد"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "گھر"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "سودھ"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "کاپی"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "کاپی کیتی گئی!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Página Anterior"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Próxima Página"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 minuto"
|
||||||
|
other: "{{ .Count }} minutos"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "palavra"
|
||||||
|
other: "{{ .Count }} palavras"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Conteúdo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduções"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Início"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiado!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Înapoi"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Înainte"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 minut"
|
||||||
|
other: "{{ .Count }} minute"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "cuvânt"
|
||||||
|
other: "{{ .Count }} cuvinte"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Sumar"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduceri"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Acasă"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editează"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiază"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiat!"
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Предыдущая"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Следующая"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
zero: "0 минут"
|
||||||
|
one: "1 минута"
|
||||||
|
few: "{{ .Count }} минуты"
|
||||||
|
many: "{{ .Count }} минут"
|
||||||
|
other: "{{ .Count }} минута"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
zero: "0 слов"
|
||||||
|
one: "1 слово"
|
||||||
|
few: "{{ .Count }} слова"
|
||||||
|
many: "{{ .Count }} слов"
|
||||||
|
other: "{{ .Count }} слово"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Оглавление"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Переводы"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Главная"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Редактировать"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "копировать"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скопировано!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Predch"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Ďaľší"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "slovo"
|
||||||
|
other: "{{ .Count }} slov"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Obsah"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Preklady"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Domov"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Upraviť"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopírovať"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "skopírované!"
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Förra Sidan"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Nästa Sida"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Innehållsförteckning"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Översättningar"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Hem"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Redigera"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopiera"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopierad!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Uliopita"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Ujao"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "dakika 1"
|
||||||
|
other: "dakika {{ .Count }}"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "neno"
|
||||||
|
other: "maneno {{ .Count }}"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Jedwali la Yaliyomo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Tafsiri"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Mwanzo"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Hariri"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "nakili"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "nakiliwa!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "ก่อนหน้า"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "ถัดไป"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 นาที"
|
||||||
|
other: "{{ .Count }} นาที"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "คำ"
|
||||||
|
other: "{{ .Count }} คำ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "สารบัญ"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "การแปล"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "หน้าหลัก"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "แก้ไข"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "คัดลอก"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "คัดลอกแล้ว!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Önceki"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Sonraki"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 dk"
|
||||||
|
other: "{{ .Count }} dk"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "sözcük"
|
||||||
|
other: "{{ .Count }} sözcük"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "İçindekiler"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Çeviriler"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Ana Sayfa"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Düzenle"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopyala"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopyalandı!"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Попередня"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Наступна"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 хвилина"
|
||||||
|
other: "{{ .Count }} хвилин"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Зміст"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Переклади"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Головна"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "копіювати"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скопійовано!"
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Oldingi sahifa"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Keyingi sahifa"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "Bir daqiqa"
|
||||||
|
other: "{{ .Count }} daqiqa"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Mundarija"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Tarjimalar"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Bosh sahifa"
|
||||||
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "Trang trước"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Trang tiếp theo"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 phút"
|
||||||
|
other: "{{ .Count }} phút"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "từ"
|
||||||
|
other: "{{ .Count }} từ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Mục lục"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Bản dịch"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Trang chủ"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Chỉnh sửa"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Sao chép"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Đã sao chép!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "上一頁"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "下一頁"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 分鐘"
|
||||||
|
other: "{{ .Count }} 分鐘"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "字"
|
||||||
|
other: "{{ .Count }} 字"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "目錄"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "語言"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "首頁"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "編輯"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "複製"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "已複製!"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
- id: prev_page
|
||||||
|
translation: "上一页"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "下一页"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 分钟"
|
||||||
|
other: "{{ .Count }} 分钟"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "字"
|
||||||
|
other: "{{ .Count }} 字"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "目录"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "语言"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "主页"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "编辑"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "复制"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "已复制!"
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 138 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,3 @@
|
|||||||
|
{{- define "main" }}
|
||||||
|
<div class="not-found">404</div>
|
||||||
|
{{- end }}{{/* end main */ -}}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{{- $u := urls.Parse .Destination -}}
|
||||||
|
{{- $src := $u.String -}}
|
||||||
|
{{- if not $u.IsAbs -}}
|
||||||
|
{{- $path := strings.TrimPrefix "./" $u.Path }}
|
||||||
|
{{- with or (.PageInner.Resources.Get $path) (resources.Get $path) -}}
|
||||||
|
{{- $src = .RelPermalink -}}
|
||||||
|
{{- with $u.RawQuery -}}
|
||||||
|
{{- $src = printf "%s?%s" $src . -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- with $u.Fragment -}}
|
||||||
|
{{- $src = printf "%s#%s" $src . -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $attributes := merge .Attributes (dict "alt" .Text "src" $src "title" (.Title | transform.HTMLEscape) "loading" "lazy") -}}
|
||||||
|
<img
|
||||||
|
{{- range $k, $v := $attributes -}}
|
||||||
|
{{- if $v -}}
|
||||||
|
{{- printf " %s=%q" $k $v | safeHTMLAttr -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}>
|
||||||
|
{{- /**/ -}}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{{- /* formats .Content headings by adding an anchor */ -}}
|
||||||
|
{{ . | replaceRE
|
||||||
|
"(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)"
|
||||||
|
"${1}<a hidden class=\"anchor\" aria-hidden=\"true\" href=\"#${2}\">#</a>${3}"
|
||||||
|
| safeHTML
|
||||||
|
}}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{{- if or .Params.author site.Params.author }}
|
||||||
|
{{- $author := (.Params.author | default site.Params.author) }}
|
||||||
|
{{- $author_type := (printf "%T" $author) }}
|
||||||
|
|
||||||
|
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }}
|
||||||
|
{{- (delimit $author ", " ) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $author }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{{- if (.Param "ShowBreadCrumbs") -}}
|
||||||
|
<nav class="breadcrumbs" role="navigation" aria-label="Breadcrumb">
|
||||||
|
{{- $ancestors := .Ancestors.Reverse -}}
|
||||||
|
{{- range $i, $bc := $ancestors }}
|
||||||
|
{{- if eq $i 0 }}
|
||||||
|
<a href="{{ $bc.RelPermalink }}">{{ i18n "home" | default "Home" }}</a>
|
||||||
|
{{- else }}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
|
||||||
|
<polyline points="9 18 15 12 9 6"></polyline>
|
||||||
|
</svg>
|
||||||
|
<a href="{{ $bc.RelPermalink }}">{{ $bc.Title }}</a>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
|
||||||
|
<polyline points="9 18 15 12 9 6"></polyline>
|
||||||
|
</svg>
|
||||||
|
</nav>
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{{- /* Comments area start */ -}}
|
||||||
|
{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}}
|
||||||
|
{{- /* Comments area end */ -}}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
{{- with .cxt}} {{/* Apply proper context from dict */}}
|
||||||
|
{{- if (and .Params.cover.image (not $.isHidden)) }}
|
||||||
|
<figure class="entry-cover">
|
||||||
|
{{- $loading := cond $.IsSingle "eager" "lazy" }}
|
||||||
|
{{- $addLink := (and site.Params.cover.linkFullImages $.IsSingle) }}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
|
||||||
|
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }}
|
||||||
|
|
||||||
|
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||||
|
{{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||||
|
{{- $cover := (or $pageBundleCover $globalResourcesCover)}}
|
||||||
|
{{- /* We are not using the .Param.cover.relative to decide the location of image */}}
|
||||||
|
{{- /* If we have the image in pageBundle or globalResources we can process the image */}}
|
||||||
|
|
||||||
|
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
|
||||||
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
|
{{- if hugo.IsExtended -}}
|
||||||
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $imgdl := (.Params.cover.image) | absURL }}
|
||||||
|
{{- if $cover -}}
|
||||||
|
{{- $imgdl = $cover.Permalink }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $addLink }}
|
||||||
|
<a href="{{ $imgdl }}" target="_blank" rel="noopener noreferrer">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if $cover -}}
|
||||||
|
{{/* i.e it is present in page bundle */}}
|
||||||
|
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
|
||||||
|
<img loading="{{$loading}}"
|
||||||
|
srcset='{{- range $size := $sizes -}}
|
||||||
|
{{- if (ge $cover.Width $size) }}
|
||||||
|
{{- printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw," $size) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- printf "%s %dw" ($cover.Permalink) ($cover.Width) }}'
|
||||||
|
src="{{ $cover.Permalink }}"
|
||||||
|
sizes="(min-width: 768px) 720px, 100vw"
|
||||||
|
width="{{ $cover.Width }}" height="{{ $cover.Height }}"
|
||||||
|
alt="{{ $alt }}">
|
||||||
|
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
|
||||||
|
<img loading="{{ $loading }}" src="{{ $imgdl }}" alt="{{ $alt }}">
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- /* For absolute urls and external links, no img processing here */}}
|
||||||
|
<img loading="{{ $loading }}" src="{{ $imgdl }}" alt="{{ $alt }}">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if $addLink }}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* Display Caption */}}
|
||||||
|
{{- if $.IsSingle }}
|
||||||
|
{{ with .Params.cover.caption -}}
|
||||||
|
<figcaption>{{ . | markdownify }}</figcaption>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</figure>
|
||||||
|
{{- end }}{{/* End image */}}
|
||||||
|
{{- end -}}{{/* End context */ -}}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{{- if and (.Param "editPost.URL") (not (.Param "editPost.disabled")) -}}
|
||||||
|
{{- if or (.Param "author") (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }}
|
||||||
|
{{- printf " | " | safeHTML -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $editURL := .Param "editPost.URL" }}
|
||||||
|
{{- $appendFilePath := .Param "editPost.appendFilePath" | default false }}
|
||||||
|
{{- $editText := .Param "editPost.Text" | default (i18n "edit_post" ) -}}
|
||||||
|
|
||||||
|
{{- if $appendFilePath -}}
|
||||||
|
{{- $fileUrlPath := path.Join .File.Path }}
|
||||||
|
{{- $editURL = printf "%s/%s" $editURL $fileUrlPath -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<a href="{{ $editURL }}" rel="noopener noreferrer edit" target="_blank">
|
||||||
|
{{- $editText -}}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{{- /* Footer custom content area start */ -}}
|
||||||
|
{{- /* Insert any custom code web-analytics, resources, etc. here */ -}}
|
||||||
|
{{- /* Footer custom content area end */ -}}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{{- /* Head custom content area start */ -}}
|
||||||
|
{{- /* Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. */ -}}
|
||||||
|
{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}}
|
||||||
|
{{- /* Head custom content area end */ -}}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{{- /* Post content custom area start */ -}}
|
||||||
|
{{- /* Insert any custom code after post content - it will appear after the post body, before the footer. */ -}}
|
||||||
|
{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}}
|
||||||
|
{{- /* Post content custom area end */ -}}
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
{{- if not (.Param "hideFooter") }}
|
||||||
|
<footer class="footer">
|
||||||
|
{{- if not site.Params.footer.hideCopyright }}
|
||||||
|
{{- if site.Copyright }}
|
||||||
|
<span>{{ site.Copyright | markdownify }}</span>
|
||||||
|
{{- else }}
|
||||||
|
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
|
||||||
|
{{- end }}
|
||||||
|
{{- print " · "}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with site.Params.footer.text }}
|
||||||
|
{{ . | markdownify }}
|
||||||
|
{{- print " · "}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
- The "Powered by Hugo" text is intentionally left at the end of the footer to give it more prominence.
|
||||||
|
- We kindly encourage you to keep this line. Keeping this credit helps open source projects like PaperMod and Hugo reach more people, supports the open source ecosystem, and shows appreciation for the work that goes into these tools.
|
||||||
|
- If you choose to remove it, please consider adding a link to the PaperMod GitHub repository somewhere on your site to give credit to the project and its contributors.
|
||||||
|
- Support us by sponsoring the project on GitHub Sponsors: https://github.com/sponsors/adityatelange
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
<span>
|
||||||
|
Powered by
|
||||||
|
<a href="https://gohugo.io/?utm_source=papermod" rel="noopener" target="_blank">Hugo</a> &
|
||||||
|
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||||
|
</span>
|
||||||
|
</footer>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (not site.Params.disableScrollToTop) }}
|
||||||
|
<a href="#top" id="top-link" class="top-link hidden" aria-label="go to top" title="Go to Top (Alt + G)" accesskey="g">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-up">
|
||||||
|
<polyline points="17 11 12 6 7 11"></polyline>
|
||||||
|
<polyline points="17 18 12 13 7 18"></polyline>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- partial "extend_footer.html" . }}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let menu = document.getElementById('menu');
|
||||||
|
if (menu) {
|
||||||
|
// Set the scroll position
|
||||||
|
const scrollPosition = localStorage.getItem("menu-scroll-position");
|
||||||
|
if (scrollPosition) {
|
||||||
|
menu.scrollLeft = parseInt(scrollPosition, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.onscroll = function () {
|
||||||
|
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||||
|
anchor.addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var id = this.getAttribute("href").substr(1);
|
||||||
|
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||||
|
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||||
|
behavior: "smooth"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||||
|
}
|
||||||
|
if (id === "top") {
|
||||||
|
history.replaceState(null, null, " ");
|
||||||
|
} else {
|
||||||
|
history.pushState(null, null, `#${id}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{- if (not site.Params.disableScrollToTop) }}
|
||||||
|
<script>
|
||||||
|
var toplink = document.getElementById("top-link");
|
||||||
|
window.onscroll = function () {
|
||||||
|
const scrollThreshold = window.innerHeight;
|
||||||
|
if (document.body.scrollTop > scrollThreshold || document.documentElement.scrollTop > scrollThreshold) {
|
||||||
|
toplink.classList.remove("hidden");
|
||||||
|
} else {
|
||||||
|
toplink.classList.add("hidden");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (not site.Params.disableThemeToggle) }}
|
||||||
|
<script>
|
||||||
|
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||||
|
const html = document.querySelector("html");
|
||||||
|
if (html.dataset.theme === "dark") {
|
||||||
|
html.dataset.theme = 'light';
|
||||||
|
localStorage.setItem("pref-theme", 'light');
|
||||||
|
} else {
|
||||||
|
html.dataset.theme = 'dark';
|
||||||
|
localStorage.setItem("pref-theme", 'dark');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }}
|
||||||
|
<script>
|
||||||
|
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||||||
|
const container = codeblock.parentNode.parentNode;
|
||||||
|
|
||||||
|
const copybutton = document.createElement('button');
|
||||||
|
copybutton.classList.add('copy-code');
|
||||||
|
copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
|
||||||
|
|
||||||
|
function copyingDone() {
|
||||||
|
copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}';
|
||||||
|
setTimeout(() => {
|
||||||
|
copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
copybutton.addEventListener('click', (cb) => {
|
||||||
|
if ('clipboard' in navigator) {
|
||||||
|
navigator.clipboard.writeText(codeblock.textContent);
|
||||||
|
copyingDone();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const range = document.createRange();
|
||||||
|
range.selectNodeContents(codeblock);
|
||||||
|
const selection = window.getSelection();
|
||||||
|
selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
try {
|
||||||
|
document.execCommand('copy');
|
||||||
|
copyingDone();
|
||||||
|
} catch (e) { };
|
||||||
|
selection.removeRange(range);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (container.classList.contains("highlight")) {
|
||||||
|
container.appendChild(copybutton);
|
||||||
|
} else if (container.parentNode.firstChild == container) {
|
||||||
|
// td containing LineNos
|
||||||
|
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
||||||
|
// table containing LineNos and code
|
||||||
|
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
||||||
|
} else {
|
||||||
|
// code blocks not having highlight as parent class
|
||||||
|
codeblock.parentNode.appendChild(copybutton);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }}
|
||||||
|
<meta name="robots" content="index, follow">
|
||||||
|
{{- else }}
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Title */}}
|
||||||
|
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title>
|
||||||
|
|
||||||
|
{{- /* Meta */}}
|
||||||
|
{{- if .IsHome }}
|
||||||
|
{{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }}
|
||||||
|
{{- else }}
|
||||||
|
<meta name="keywords" content="{{ if .Params.keywords -}}
|
||||||
|
{{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
|
||||||
|
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}">
|
||||||
|
{{- end }}
|
||||||
|
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
|
||||||
|
{{- .Summary | default (printf "%s - %s" .Title site.Title) }}{{- else }}
|
||||||
|
{{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
|
||||||
|
<meta name="author" content="{{ (partial "author.html" . ) }}">
|
||||||
|
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
|
||||||
|
{{- if site.Params.analytics.google.SiteVerificationTag }}
|
||||||
|
<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
|
||||||
|
{{- end }}
|
||||||
|
{{- if site.Params.analytics.yandex.SiteVerificationTag }}
|
||||||
|
<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
|
||||||
|
{{- end }}
|
||||||
|
{{- if site.Params.analytics.bing.SiteVerificationTag }}
|
||||||
|
<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
|
||||||
|
{{- end }}
|
||||||
|
{{- if site.Params.analytics.naver.SiteVerificationTag }}
|
||||||
|
<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Styles */}}
|
||||||
|
|
||||||
|
{{- /* includes */}}
|
||||||
|
{{- $includes := slice }}
|
||||||
|
{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
|
||||||
|
|
||||||
|
{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
|
||||||
|
|
||||||
|
{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
|
||||||
|
{{- $reset := (resources.Get "css/core/reset.css") }}
|
||||||
|
{{- $media := (resources.Get "css/core/zmedia.css") }}
|
||||||
|
{{- $license_css := (resources.Get "css/core/license.css") }}
|
||||||
|
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
|
||||||
|
|
||||||
|
{{- /* markup.highlight.noClasses should be set to `false` */}}
|
||||||
|
{{- $chroma_styles := (resources.Get "css/includes/chroma-styles.css") }}
|
||||||
|
{{- $chroma_mod := (resources.Get "css/includes/chroma-mod.css") }}
|
||||||
|
|
||||||
|
{{- /* order is important */}}
|
||||||
|
{{- $core := (slice $theme_vars $reset $common $chroma_styles $chroma_mod $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
|
||||||
|
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
|
||||||
|
|
||||||
|
{{- /* bundle all required css */}}
|
||||||
|
{{- /* Add extended css after theme style */ -}}
|
||||||
|
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
|
||||||
|
|
||||||
|
{{- if not site.Params.assets.disableFingerprinting }}
|
||||||
|
{{- $stylesheet := $stylesheet | fingerprint }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- else }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Search */}}
|
||||||
|
{{- if (eq .Layout `search`) -}}
|
||||||
|
<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
|
||||||
|
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }}
|
||||||
|
{{- $fusejs := resources.Get "js/fuse.basic.min.js" }}
|
||||||
|
{{- $license_js := resources.Get "js/license.js" }}
|
||||||
|
{{- if not site.Params.assets.disableFingerprinting }}
|
||||||
|
{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }}
|
||||||
|
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
|
||||||
|
{{- else }}
|
||||||
|
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }}
|
||||||
|
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* Favicons */}}
|
||||||
|
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
|
||||||
|
<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
|
||||||
|
<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
|
||||||
|
<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
|
||||||
|
<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
|
||||||
|
|
||||||
|
{{- /* RSS */}}
|
||||||
|
{{ range .AlternativeOutputFormats -}}
|
||||||
|
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}" title="{{ .Name }}">
|
||||||
|
{{ end -}}
|
||||||
|
{{- range .AllTranslations -}}
|
||||||
|
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<style>
|
||||||
|
#theme-toggle,
|
||||||
|
.top-link {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
{{- if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark")) }}
|
||||||
|
<style>
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root {
|
||||||
|
--theme: rgb(29, 30, 32);
|
||||||
|
--entry: rgb(46, 46, 51);
|
||||||
|
--primary: rgb(218, 218, 219);
|
||||||
|
--secondary: rgb(155, 156, 157);
|
||||||
|
--tertiary: rgb(65, 66, 68);
|
||||||
|
--content: rgb(196, 196, 197);
|
||||||
|
--code-block-bg: rgb(46, 46, 51);
|
||||||
|
--code-bg: rgb(55, 56, 62);
|
||||||
|
--border: rgb(51, 51, 51);
|
||||||
|
color-scheme: dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
background: var(--theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc {
|
||||||
|
background: var(--entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
{{- end }}
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
{{- /* theme-toggle is enabled */}}
|
||||||
|
{{- if (not site.Params.disableThemeToggle) }}
|
||||||
|
{{- /* theme is light */}}
|
||||||
|
{{- if (eq site.Params.defaultTheme "light") }}
|
||||||
|
<script>
|
||||||
|
if (localStorage.getItem("pref-theme") === "dark") {
|
||||||
|
document.querySelector("html").dataset.theme = 'dark';
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- /* theme is dark */}}
|
||||||
|
{{- else if (eq site.Params.defaultTheme "dark") }}
|
||||||
|
<script>
|
||||||
|
if (localStorage.getItem("pref-theme") === "light") {
|
||||||
|
document.querySelector("html").dataset.theme = 'light';
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- else }}
|
||||||
|
{{- /* theme is auto */}}
|
||||||
|
<script>
|
||||||
|
if (localStorage.getItem("pref-theme") === "dark") {
|
||||||
|
document.querySelector("html").dataset.theme = 'dark';
|
||||||
|
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||||
|
document.querySelector("html").dataset.theme = 'light';
|
||||||
|
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
document.querySelector("html").dataset.theme = 'dark';
|
||||||
|
} else {
|
||||||
|
document.querySelector("html").dataset.theme = 'light';
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
|
{{- /* theme-toggle is disabled and theme is auto */}}
|
||||||
|
{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}}
|
||||||
|
<script>
|
||||||
|
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
document.querySelector("html").dataset.theme = 'dark';
|
||||||
|
} else {
|
||||||
|
document.querySelector("html").dataset.theme = 'light';
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- partial "extend_head.html" . -}}
|
||||||
|
|
||||||
|
{{- /* Misc */}}
|
||||||
|
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
|
||||||
|
{{- partial "google_analytics.html" . }}
|
||||||
|
{{- partial "templates/opengraph.html" . }}
|
||||||
|
{{- partial "templates/twitter_cards.html" . }}
|
||||||
|
{{- partial "templates/schema_json.html" . }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<header class="header">
|
||||||
|
<nav class="header-nav">
|
||||||
|
<div class="logo">
|
||||||
|
{{- $label_text := (site.Params.label.text | default site.Title) }}
|
||||||
|
{{- if site.Title }}
|
||||||
|
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }} (Alt + H)">
|
||||||
|
{{- if site.Params.label.icon }}
|
||||||
|
{{- $img := resources.Get site.Params.label.icon }}
|
||||||
|
{{- if $img }}
|
||||||
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
|
{{- if hugo.IsExtended -}}
|
||||||
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||||
|
{{- if site.Params.label.iconHeight }}
|
||||||
|
{{- $img = $img.Resize (printf "x%d" site.Params.label.iconHeight) }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $img = $img.Resize "x30" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<img src="{{ $img.Permalink }}" alt="" aria-label="logo"
|
||||||
|
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||||
|
{{- else }}
|
||||||
|
<img src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
|
||||||
|
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||||
|
{{- end -}}
|
||||||
|
{{- else if hasPrefix site.Params.label.iconSVG "<svg" }}
|
||||||
|
{{ site.Params.label.iconSVG | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $label_text -}}
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- $lsenabled := (or (not site.Params.disableThemeToggle) (and (not site.Params.disableLangToggle) (hugo.IsMultilingual))) }}
|
||||||
|
{{- if $lsenabled }}
|
||||||
|
<div class="logo-switches">
|
||||||
|
{{- if (not site.Params.disableThemeToggle) }}
|
||||||
|
<button id="theme-toggle" class="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
|
||||||
|
<svg class="moon" xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24"
|
||||||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round">
|
||||||
|
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||||
|
</svg>
|
||||||
|
<svg class="sun" xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24"
|
||||||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round">
|
||||||
|
<circle cx="12" cy="12" r="5"></circle>
|
||||||
|
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||||
|
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||||
|
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||||
|
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||||
|
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||||
|
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||||
|
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||||
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (not site.Params.disableLangToggle) }}
|
||||||
|
{{- $lang := .Lang}}
|
||||||
|
{{- with site.Home.Translations }}
|
||||||
|
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
|
||||||
|
{{- if $separator }}<span class="nav-sep">|</span>{{ end }}
|
||||||
|
<ul class="lang-menu">
|
||||||
|
{{- range . -}}
|
||||||
|
{{- if ne $lang .Lang }}
|
||||||
|
<li>
|
||||||
|
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
|
||||||
|
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
|
||||||
|
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||||
|
{{- .Language.LanguageName | emojify -}}
|
||||||
|
{{- else }}
|
||||||
|
{{- .Lang | title -}}
|
||||||
|
{{- end -}}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end}}
|
||||||
|
</ul>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
{{- $currentPage := . }}
|
||||||
|
<ul id="menu" class="menu">
|
||||||
|
{{- range site.Menus.main }}
|
||||||
|
{{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
|
||||||
|
{{- $page_url:= $currentPage.Permalink | absLangURL }}
|
||||||
|
{{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
|
||||||
|
{{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
|
||||||
|
<span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
|
||||||
|
{{- .Pre }}
|
||||||
|
{{- .Name -}}
|
||||||
|
{{ .Post -}}
|
||||||
|
</span>
|
||||||
|
{{- if (findRE "://" .URL) }}
|
||||||
|
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
|
||||||
|
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||||
|
<path d="M15 3h6v6"></path>
|
||||||
|
<path d="M10 14L21 3"></path>
|
||||||
|
</svg>
|
||||||
|
{{- end }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{{- with site.Params.homeInfoParams }}
|
||||||
|
<article class="first-entry home-info">
|
||||||
|
<header class="entry-header">
|
||||||
|
<h1>{{ .Title | markdownify }}</h1>
|
||||||
|
</header>
|
||||||
|
<div class="entry-content md-content">
|
||||||
|
{{ $opts := dict "display" "block" }}
|
||||||
|
{{ .Content | $.Page.RenderString $opts }}
|
||||||
|
</div>
|
||||||
|
<footer class="entry-footer">
|
||||||
|
{{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }}
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<div class="profile">
|
||||||
|
{{- with site.Params.profileMode }}
|
||||||
|
<div class="profile_inner">
|
||||||
|
{{- if .imageUrl -}}
|
||||||
|
{{- $img := "" }}
|
||||||
|
{{- if not (urls.Parse .imageUrl).IsAbs }}
|
||||||
|
{{- $img = resources.Get .imageUrl }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $img }}
|
||||||
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
|
{{- if hugo.IsExtended -}}
|
||||||
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||||
|
{{- if (not (and (not .imageHeight) (not .imageWidth))) }}
|
||||||
|
{{- $img = $img.Resize (printf "%dx%d" .imageWidth .imageHeight) }}
|
||||||
|
{{- else if .imageHeight }}
|
||||||
|
{{- $img = $img.Resize (printf "x%d" .imageHeight) }}
|
||||||
|
{{ else if .imageWidth }}
|
||||||
|
{{- $img = $img.Resize (printf "%dx" .imageWidth) }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $img = $img.Resize "150x150" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<img draggable="false" src="{{ $img.Permalink }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||||
|
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||||
|
{{- else }}
|
||||||
|
<img draggable="false" src="{{ .imageUrl | absURL }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||||
|
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<h1>{{ .title | default site.Title | markdownify }}</h1>
|
||||||
|
<span>{{ .subtitle | markdownify }}</span>
|
||||||
|
{{- partial "social_icons.html" -}}
|
||||||
|
|
||||||
|
{{- with .buttons }}
|
||||||
|
<div class="buttons">
|
||||||
|
{{- range . }}
|
||||||
|
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name }}">
|
||||||
|
<span class="button-inner">
|
||||||
|
{{ .name }}
|
||||||
|
{{- if (findRE "://" .url) }}
|
||||||
|
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="14" width="14">
|
||||||
|
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||||
|
<path d="M15 3h6v6"></path>
|
||||||
|
<path d="M10 14L21 3"></path>
|
||||||
|
</svg>
|
||||||
|
{{- end }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
{{- end}}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{{ if and (.Params.canonicalURL) (.Params.ShowCanonicalLink ) -}}
|
||||||
|
{{ $url := urls.Parse .Params.canonicalURL }}
|
||||||
|
|
||||||
|
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated (or .Params.editPost.URL site.Params.editPost.URL) }} | {{- end -}}
|
||||||
|
<span>
|
||||||
|
{{- (site.Params.CanonicalLinkText | default .Params.CanonicalLinkText) | default "Originally published at" -}}
|
||||||
|
<a href="{{ trim .Params.canonicalURL " " }}" title="{{ trim .Params.canonicalURL " " }}" target="_blank" rel="noopener noreferrer">{{ $url.Host }}</a>
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{- $scratch := newScratch }}
|
||||||
|
|
||||||
|
{{- if not .Date.IsZero -}}
|
||||||
|
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default ":date_long" site.Params.DateFormat)))) }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (.Param "ShowReadingTime") -}}
|
||||||
|
{{- $scratch.Add "meta" (slice (printf "<span>%s</span>" (i18n "read_time" .ReadingTime | default (printf "%d min" .ReadingTime)))) }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (.Param "ShowWordCount") -}}
|
||||||
|
{{- $scratch.Add "meta" (slice (printf "<span>%s</span>" (i18n "words" .WordCount | default (printf "%d words" .WordCount)))) }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if not (.Param "hideAuthor") -}}
|
||||||
|
{{- with (partial "author.html" .) }}
|
||||||
|
{{- $scratch.Add "meta" (slice (printf "<span>%s</span>" .)) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* Combine all meta information into a single string with separators and render it as HTML.*/}}
|
||||||
|
|
||||||
|
{{- with ($scratch.Get "meta") }}
|
||||||
|
{{- delimit . " · " | safeHTML -}}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||||
|
{{- if and (gt (len $pages) 1) (in $pages . ) }}
|
||||||
|
<nav class="paginav">
|
||||||
|
{{- with $pages.Next . }}
|
||||||
|
<a class="prev" href="{{ .Permalink }}">
|
||||||
|
<span class="title">« {{ i18n "prev_page" }}</span>
|
||||||
|
<span>{{- .Name -}}</span>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
{{- with $pages.Prev . }}
|
||||||
|
<a class="next" href="{{ .Permalink }}">
|
||||||
|
<span class="title">{{ i18n "next_page" }} »</span>
|
||||||
|
<span>{{- .Name -}}</span>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
</nav>
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
{{- $pageurl := .Permalink }}
|
||||||
|
{{- $title := .Title }}
|
||||||
|
|
||||||
|
{{- $.Scratch.Set "tags" ""}}
|
||||||
|
|
||||||
|
{{- with .Params.Tags }}
|
||||||
|
{{- $hashtags := newScratch}}
|
||||||
|
{{- range . }}{{ $hashtags.Add "tags" (slice (replaceRE "(\\s)" "" . ))}}{{end}}
|
||||||
|
{{- $.Scratch.Set "tags" (delimit ($hashtags.Get "tags") ",") }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $custom := false }}
|
||||||
|
{{- $ShareButtons := (.Param "ShareButtons")}}
|
||||||
|
{{- with $ShareButtons }}{{ $custom = true }}{{ end }}
|
||||||
|
|
||||||
|
<ul class="share-buttons">
|
||||||
|
{{- if (or (cond ($custom) (in $ShareButtons "x") (true)) (cond ($custom) (in $ShareButtons "twitter") (true))) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on x"
|
||||||
|
href="https://x.com/intent/tweet/?text={{ $title }}&url={{ $pageurl }}&hashtags={{- $.Scratch.Get "tags" -}}">
|
||||||
|
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "linkedin") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
|
||||||
|
href="https://www.linkedin.com/shareArticle?mini=true&url={{ $pageurl }}&title={{ $title }}&summary={{ $title }}&source={{ $pageurl }}">
|
||||||
|
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "reddit") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
|
||||||
|
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
|
||||||
|
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "facebook") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
|
||||||
|
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
|
||||||
|
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "whatsapp") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
|
||||||
|
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
|
||||||
|
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "telegram") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
|
||||||
|
href="https://telegram.me/share/url?text={{ $title }}&url={{ $pageurl }}">
|
||||||
|
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- if (cond ($custom) (in $ShareButtons "ycombinator") (true)) }}
|
||||||
|
<li>
|
||||||
|
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on ycombinator"
|
||||||
|
href="https://news.ycombinator.com/submitlink?t={{ $title }}&u={{ $pageurl }}">
|
||||||
|
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||||
|
<path
|
||||||
|
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user