375 changed files with 5896 additions and 19721 deletions
@ -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 orther 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.112.4 (Recommended - Minimum version required for PaperMod) |
||||
|
- Hugo < 0.112.4 (Incompatible - Not recommended to build PaperMod on lower verions) |
||||
|
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 enahancement form :) |
||||
|
- Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any orther 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. |
||||
|
|
||||
|
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,77 @@ |
|||||
|
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: "0.112.4" |
||||
|
|
||||
|
# Allow one concurrent deployment |
||||
|
concurrency: |
||||
|
group: "pages" |
||||
|
cancel-in-progress: true |
||||
|
|
||||
|
# Default to bash |
||||
|
defaults: |
||||
|
run: |
||||
|
shell: bash |
||||
|
|
||||
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages |
||||
|
permissions: |
||||
|
contents: read |
||||
|
pages: write |
||||
|
id-token: write |
||||
|
|
||||
|
jobs: |
||||
|
# Build job |
||||
|
build: |
||||
|
runs-on: ubuntu-latest |
||||
|
env: |
||||
|
HUGO_VERSION: ${{ github.event.inputs.hugoVersion || '0.112.4' }} |
||||
|
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@v3 |
||||
|
with: |
||||
|
ref: exampleSite |
||||
|
- name: Setup Pages |
||||
|
id: pages |
||||
|
uses: actions/configure-pages@v3 |
||||
|
- 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@v2 |
||||
|
with: |
||||
|
path: ./public |
||||
|
# Deployment job |
||||
|
deploy: |
||||
|
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@v2 |
||||
@ -0,0 +1,22 @@ |
|||||
|
MIT License |
||||
|
|
||||
|
Copyright (c) 2020 nanxiaobei and adityatelange |
||||
|
Copyright (c) 2021-2024 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,106 @@ |
|||||
|
<h1 align=center>Hugo PaperMod | <a href="https://adityatelange.github.io/hugo-PaperMod/" rel="nofollow">Demo</a></h1> |
||||
|
|
||||
|
<h4 align=center>☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive</h4> |
||||
|
<br> |
||||
|
|
||||
|
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3).<br> |
||||
|
> The goal of this project is to add more features and customization to the og theme. |
||||
|
|
||||
|
**Documentation** can be found here: [**📚 Wiki**](https://github.com/adityatelange/hugo-PaperMod/wiki) |
||||
|
|
||||
|
**ExampleSite** can be found here: [**exampleSite**](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source. |
||||
|
|
||||
|
[](https://themes.gohugo.io/themes/hugo-papermod/) |
||||
|
[](https://github.com/gohugoio/hugo/releases/tag/v0.112.4) |
||||
|
[](https://discord.gg/ahpmTvhVmp) |
||||
|
[](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE) |
||||
|
 |
||||
|
[](https://x.com/intent/tweet/?text=Checkout%20Hugo%20PaperMod%20%E2%9C%A8%0AA%20fast,%20clean,%20responsive%20Hugo%20theme.&url=https://github.com/adityatelange/hugo-PaperMod&hashtags=Hugo,PaperMod) |
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
<p align="center"> |
||||
|
<kbd><img src="https://user-images.githubusercontent.com/21258296/114303440-bfc0ae80-9aeb-11eb-8cfa-48a4bb385a6d.png" alt="Mockup image" title="Mockup"/></kbd> |
||||
|
</p> |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Features/Mods 💥 |
||||
|
|
||||
|
- Uses Hugo's asset generator with pipelining, fingerprinting, bundling and minification by default. |
||||
|
- 3 Modes: |
||||
|
- [Regular Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#regular-mode-default-mode) |
||||
|
- [Home-Info Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode) |
||||
|
- [Profile Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode) |
||||
|
- Table of Content Generation (newer implementation). |
||||
|
- Archive of posts. |
||||
|
- Social Icons (home-info and profile-mode). |
||||
|
- Social-Media Share buttons on posts. |
||||
|
- Menu location indicator. |
||||
|
- Multilingual support. (with language selector). |
||||
|
- Taxonomies. |
||||
|
- Cover image for each post (with Responsive image support). |
||||
|
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button). |
||||
|
- SEO Friendly. |
||||
|
- Multiple Author support. |
||||
|
- Search Page with Fuse.js |
||||
|
- Other Posts suggestion below a post |
||||
|
- Breadcrumb Navigation. |
||||
|
- Code Block Copy buttons. |
||||
|
- Hugo's Chroma syntax highlighter. |
||||
|
- No webpack, nodejs and other dependencies are required to edit the theme. |
||||
|
|
||||
|
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Install/Update 📥 |
||||
|
|
||||
|
Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## FAQs / How To's Guide 🙋 |
||||
|
|
||||
|
Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Social-Icons/Share-Icons 🖼️ |
||||
|
|
||||
|
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Release Changelog 📃 |
||||
|
|
||||
|
Release ChangeLog has info about stuff added: **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## [Pagespeed Insights (100% ?)](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/) 👀 |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Support 🫶 |
||||
|
|
||||
|
- Star 🌟 this repository. |
||||
|
- Help spread the word about PaperMod by sharing it on social media and recommending it to your friends. 🗣️ |
||||
|
- You can also sponsor 🏅 on [Github Sponsors](https://github.com/sponsors/adityatelange) / [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 over time 📈 |
||||
|
|
||||
|
[](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,60 @@ |
|||||
|
.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; |
||||
|
border-bottom: 1px solid var(--secondary); |
||||
|
} |
||||
|
|
||||
|
.footer a:hover { |
||||
|
border-bottom: 1px solid var(--primary); |
||||
|
} |
||||
|
|
||||
|
.top-link { |
||||
|
visibility: hidden; |
||||
|
position: fixed; |
||||
|
bottom: 60px; |
||||
|
right: 30px; |
||||
|
z-index: 99; |
||||
|
background: var(--tertiary); |
||||
|
width: 42px; |
||||
|
height: 42px; |
||||
|
padding: 12px; |
||||
|
border-radius: 64px; |
||||
|
transition: visibility 0.5s, opacity 0.8s linear; |
||||
|
} |
||||
|
|
||||
|
.top-link, |
||||
|
.top-link svg { |
||||
|
filter: drop-shadow(0px 0px 0px var(--theme)); |
||||
|
} |
||||
|
|
||||
|
.footer a:hover, |
||||
|
.top-link:hover { |
||||
|
color: var(--primary); |
||||
|
} |
||||
|
|
||||
|
.top-link:focus, |
||||
|
#theme-toggle:focus { |
||||
|
outline: 0; |
||||
|
} |
||||
@ -0,0 +1,93 @@ |
|||||
|
.nav { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
justify-content: space-between; |
||||
|
max-width: calc(var(--nav-width) + var(--gap) * 2); |
||||
|
margin-inline-start: auto; |
||||
|
margin-inline-end: auto; |
||||
|
line-height: var(--header-height); |
||||
|
} |
||||
|
|
||||
|
.nav a { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
.logo, |
||||
|
#menu { |
||||
|
display: flex; |
||||
|
margin: auto var(--gap); |
||||
|
} |
||||
|
|
||||
|
.logo { |
||||
|
flex-wrap: inherit; |
||||
|
} |
||||
|
|
||||
|
.logo a { |
||||
|
font-size: 24px; |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
.logo a img, .logo a svg { |
||||
|
display: inline; |
||||
|
vertical-align: middle; |
||||
|
pointer-events: none; |
||||
|
transform: translate(0, -10%); |
||||
|
border-radius: 6px; |
||||
|
margin-inline-end: 8px; |
||||
|
} |
||||
|
|
||||
|
button#theme-toggle { |
||||
|
font-size: 26px; |
||||
|
margin: auto 4px; |
||||
|
} |
||||
|
|
||||
|
body.dark #moon { |
||||
|
vertical-align: middle; |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
body:not(.dark) #sun { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
#menu { |
||||
|
list-style: none; |
||||
|
word-break: keep-all; |
||||
|
overflow-x: auto; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
#menu li + li { |
||||
|
margin-inline-start: var(--gap); |
||||
|
} |
||||
|
|
||||
|
#menu a { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
#menu .active { |
||||
|
font-weight: 500; |
||||
|
border-bottom: 2px solid currentColor; |
||||
|
} |
||||
|
|
||||
|
.lang-switch li, |
||||
|
.lang-switch ul, |
||||
|
.logo-switches { |
||||
|
display: inline-flex; |
||||
|
margin: auto 4px; |
||||
|
} |
||||
|
|
||||
|
.lang-switch { |
||||
|
display: flex; |
||||
|
flex-wrap: inherit; |
||||
|
} |
||||
|
|
||||
|
.lang-switch a { |
||||
|
margin: auto 3px; |
||||
|
font-size: 16px; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
.logo-switches { |
||||
|
flex-wrap: inherit; |
||||
|
} |
||||
@ -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,108 @@ |
|||||
|
.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-content { |
||||
|
margin: 14px 0; |
||||
|
font-size: 16px; |
||||
|
-webkit-line-clamp: 3; |
||||
|
} |
||||
|
|
||||
|
.first-entry .entry-footer { |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.home-info .entry-content { |
||||
|
-webkit-line-clamp: unset; |
||||
|
} |
||||
|
|
||||
|
.post-entry { |
||||
|
position: relative; |
||||
|
margin-bottom: var(--gap); |
||||
|
padding: var(--gap); |
||||
|
background: var(--entry); |
||||
|
border-radius: var(--radius); |
||||
|
transition: transform 0.1s; |
||||
|
border: 1px solid var(--border); |
||||
|
} |
||||
|
|
||||
|
.post-entry:active { |
||||
|
transform: scale(0.96); |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
|
||||
|
.entry-footer { |
||||
|
color: var(--secondary); |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
|
||||
|
.entry-link { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
|
||||
|
.entry-cover img { |
||||
|
border-radius: var(--radius); |
||||
|
pointer-events: none; |
||||
|
width: 100%; |
||||
|
height: auto; |
||||
|
} |
||||
|
|
||||
|
.entry-cover a { |
||||
|
color: var(--secondary); |
||||
|
box-shadow: 0 1px 0 var(--primary); |
||||
|
} |
||||
@ -0,0 +1,409 @@ |
|||||
|
.page-header, |
||||
|
.post-header { |
||||
|
margin: 24px auto var(--content-gap) auto; |
||||
|
} |
||||
|
|
||||
|
.post-title { |
||||
|
margin-bottom: 2px; |
||||
|
font-size: 40px; |
||||
|
} |
||||
|
|
||||
|
.post-description { |
||||
|
margin-top: 10px; |
||||
|
margin-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.post-meta, |
||||
|
.breadcrumbs { |
||||
|
color: var(--secondary); |
||||
|
font-size: 14px; |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
} |
||||
|
|
||||
|
.post-meta .i18n_list li { |
||||
|
display: inline-flex; |
||||
|
list-style: none; |
||||
|
margin: auto 3px; |
||||
|
box-shadow: 0 1px 0 var(--secondary); |
||||
|
} |
||||
|
|
||||
|
.breadcrumbs a { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.post-content { |
||||
|
color: var(--content); |
||||
|
} |
||||
|
|
||||
|
.post-content h3, |
||||
|
.post-content h4, |
||||
|
.post-content h5, |
||||
|
.post-content h6 { |
||||
|
margin: 24px 0 16px; |
||||
|
} |
||||
|
|
||||
|
.post-content h1 { |
||||
|
margin: 40px auto 32px; |
||||
|
font-size: 40px; |
||||
|
} |
||||
|
|
||||
|
.post-content h2 { |
||||
|
margin: 32px auto 24px; |
||||
|
font-size: 32px; |
||||
|
} |
||||
|
|
||||
|
.post-content h3 { |
||||
|
font-size: 24px; |
||||
|
} |
||||
|
|
||||
|
.post-content h4 { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.post-content h5 { |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.post-content h6 { |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
.post-content a, |
||||
|
.toc a:hover { |
||||
|
box-shadow: 0 1px 0; |
||||
|
box-decoration-break: clone; |
||||
|
-webkit-box-decoration-break: clone; |
||||
|
} |
||||
|
|
||||
|
.post-content a code { |
||||
|
margin: auto 0; |
||||
|
border-radius: 0; |
||||
|
box-shadow: 0 -1px 0 var(--primary) inset; |
||||
|
} |
||||
|
|
||||
|
.post-content del { |
||||
|
text-decoration: line-through; |
||||
|
} |
||||
|
|
||||
|
.post-content dl, |
||||
|
.post-content ol, |
||||
|
.post-content p, |
||||
|
.post-content figure, |
||||
|
.post-content ul { |
||||
|
margin-bottom: var(--content-gap); |
||||
|
} |
||||
|
|
||||
|
.post-content ol, |
||||
|
.post-content ul { |
||||
|
padding-inline-start: 20px; |
||||
|
} |
||||
|
|
||||
|
.post-content li { |
||||
|
margin-top: 5px; |
||||
|
} |
||||
|
|
||||
|
.post-content li p { |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content dl { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content dt { |
||||
|
width: 25%; |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
.post-content dd { |
||||
|
width: 75%; |
||||
|
margin-inline-start: 0; |
||||
|
padding-inline-start: 10px; |
||||
|
} |
||||
|
|
||||
|
.post-content dd ~ dd, |
||||
|
.post-content dt ~ dt { |
||||
|
margin-top: 10px; |
||||
|
} |
||||
|
|
||||
|
.post-content table { |
||||
|
margin-bottom: var(--content-gap); |
||||
|
} |
||||
|
|
||||
|
.post-content table th, |
||||
|
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td { |
||||
|
min-width: 80px; |
||||
|
padding: 8px 5px; |
||||
|
line-height: 1.5; |
||||
|
border-bottom: 1px solid var(--border); |
||||
|
} |
||||
|
|
||||
|
.post-content table th { |
||||
|
text-align: start; |
||||
|
} |
||||
|
|
||||
|
.post-content table:not(.highlighttable) td code:only-child { |
||||
|
margin: auto 0; |
||||
|
} |
||||
|
|
||||
|
.post-content .highlight table { |
||||
|
border-radius: var(--radius); |
||||
|
} |
||||
|
|
||||
|
.post-content .highlight:not(table) { |
||||
|
margin: 10px auto; |
||||
|
background: var(--code-block-bg) !important; |
||||
|
border-radius: var(--radius); |
||||
|
direction: ltr; |
||||
|
} |
||||
|
|
||||
|
.post-content li > .highlight { |
||||
|
margin-inline-end: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content ul pre { |
||||
|
margin-inline-start: calc(var(--gap) * -2); |
||||
|
} |
||||
|
|
||||
|
.post-content .highlight pre { |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content .highlighttable { |
||||
|
table-layout: fixed; |
||||
|
} |
||||
|
|
||||
|
.post-content .highlighttable td:first-child { |
||||
|
width: 40px; |
||||
|
} |
||||
|
|
||||
|
.post-content .highlighttable td .linenodiv { |
||||
|
padding-inline-end: 0 !important; |
||||
|
} |
||||
|
|
||||
|
.post-content .highlighttable td .highlight, |
||||
|
.post-content .highlighttable td .linenodiv pre { |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content code { |
||||
|
margin: auto 4px; |
||||
|
padding: 4px 6px; |
||||
|
font-size: 0.78em; |
||||
|
line-height: 1.5; |
||||
|
background: var(--code-bg); |
||||
|
border-radius: 2px; |
||||
|
} |
||||
|
|
||||
|
.post-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; |
||||
|
} |
||||
|
|
||||
|
.post-content blockquote { |
||||
|
margin: 20px 0; |
||||
|
padding: 0 14px; |
||||
|
border-inline-start: 3px solid var(--primary); |
||||
|
} |
||||
|
|
||||
|
.post-content hr { |
||||
|
margin: 30px 0; |
||||
|
height: 2px; |
||||
|
background: var(--tertiary); |
||||
|
border: 0; |
||||
|
} |
||||
|
|
||||
|
.post-content iframe { |
||||
|
max-width: 100%; |
||||
|
} |
||||
|
|
||||
|
.post-content img { |
||||
|
border-radius: 4px; |
||||
|
margin: 1rem 0; |
||||
|
} |
||||
|
|
||||
|
.post-content img[src*="#center"] { |
||||
|
margin: 1rem auto; |
||||
|
} |
||||
|
|
||||
|
.post-content figure.align-center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.post-content figure > figcaption { |
||||
|
color: var(--primary); |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
margin: 8px 0 16px; |
||||
|
} |
||||
|
|
||||
|
.post-content figure > figcaption > p { |
||||
|
color: var(--secondary); |
||||
|
font-size: 14px; |
||||
|
font-weight: normal; |
||||
|
} |
||||
|
|
||||
|
.toc { |
||||
|
margin: 0 2px 40px 2px; |
||||
|
border: 1px solid var(--border); |
||||
|
background: var(--code-bg); |
||||
|
border-radius: var(--radius); |
||||
|
padding: 0.4em; |
||||
|
} |
||||
|
|
||||
|
.dark .toc { |
||||
|
background: var(--entry); |
||||
|
} |
||||
|
|
||||
|
.toc details summary { |
||||
|
cursor: zoom-in; |
||||
|
margin-inline-start: 10px; |
||||
|
user-select: none; |
||||
|
} |
||||
|
|
||||
|
.toc details[open] summary { |
||||
|
cursor: zoom-out; |
||||
|
} |
||||
|
|
||||
|
.toc .details { |
||||
|
display: inline; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
.toc .inner { |
||||
|
margin: 5px 20px 0; |
||||
|
padding: 0 10px; |
||||
|
opacity: 0.9; |
||||
|
} |
||||
|
|
||||
|
.toc li ul { |
||||
|
margin-inline-start: var(--gap); |
||||
|
} |
||||
|
|
||||
|
.toc summary:focus { |
||||
|
outline: 0; |
||||
|
} |
||||
|
|
||||
|
.post-footer { |
||||
|
margin-top: 56px; |
||||
|
} |
||||
|
|
||||
|
.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; |
||||
|
} |
||||
|
|
||||
|
h1:hover .anchor, |
||||
|
h2:hover .anchor, |
||||
|
h3:hover .anchor, |
||||
|
h4:hover .anchor, |
||||
|
h5:hover .anchor, |
||||
|
h6:hover .anchor { |
||||
|
display: inline-flex; |
||||
|
color: var(--secondary); |
||||
|
margin-inline-start: 8px; |
||||
|
font-weight: 500; |
||||
|
user-select: none; |
||||
|
} |
||||
|
|
||||
|
.paginav { |
||||
|
display: flex; |
||||
|
line-height: 30px; |
||||
|
} |
||||
|
|
||||
|
.paginav a { |
||||
|
padding-inline-start: 14px; |
||||
|
padding-inline-end: 14px; |
||||
|
border-radius: var(--radius); |
||||
|
} |
||||
|
|
||||
|
.paginav .title { |
||||
|
letter-spacing: 1px; |
||||
|
text-transform: uppercase; |
||||
|
font-size: small; |
||||
|
color: var(--secondary); |
||||
|
} |
||||
|
|
||||
|
.paginav .prev, |
||||
|
.paginav .next { |
||||
|
width: 50%; |
||||
|
} |
||||
|
|
||||
|
.paginav span:hover:not(.title) { |
||||
|
box-shadow: 0 1px 0; |
||||
|
} |
||||
|
|
||||
|
.paginav .next { |
||||
|
margin-inline-start: auto; |
||||
|
text-align: right; |
||||
|
} |
||||
|
|
||||
|
[dir="rtl"] .paginav .next { |
||||
|
text-align: left; |
||||
|
} |
||||
|
|
||||
|
h1>a>svg { |
||||
|
display: inline; |
||||
|
} |
||||
|
|
||||
|
img.in-text { |
||||
|
display: inline; |
||||
|
margin: auto; |
||||
|
} |
||||
@ -0,0 +1,43 @@ |
|||||
|
.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: 10px; |
||||
|
} |
||||
|
|
||||
|
.profile img { |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
|
||||
|
.buttons { |
||||
|
flex-wrap: wrap; |
||||
|
max-width: 400px; |
||||
|
} |
||||
|
|
||||
|
.button { |
||||
|
background: var(--tertiary); |
||||
|
border-radius: var(--radius); |
||||
|
margin: 8px; |
||||
|
padding: 6px; |
||||
|
transition: transform 0.1s; |
||||
|
} |
||||
|
|
||||
|
.button-inner { |
||||
|
padding: 0 8px; |
||||
|
} |
||||
|
|
||||
|
.button:active { |
||||
|
transform: scale(0.96); |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
#searchbox input { |
||||
|
padding: 4px 10px; |
||||
|
width: 100%; |
||||
|
color: var(--primary); |
||||
|
font-weight: bold; |
||||
|
border: 2px solid var(--tertiary); |
||||
|
border-radius: var(--radius); |
||||
|
} |
||||
|
|
||||
|
#searchbox input:focus { |
||||
|
border-color: var(--secondary); |
||||
|
} |
||||
|
|
||||
|
#searchResults li { |
||||
|
list-style: none; |
||||
|
border-radius: var(--radius); |
||||
|
padding: 10px; |
||||
|
margin: 10px 0; |
||||
|
position: relative; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
#searchResults { |
||||
|
margin: 10px 0; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
#searchResults li:active { |
||||
|
transition: transform 0.1s; |
||||
|
transform: scale(0.98); |
||||
|
} |
||||
|
|
||||
|
#searchResults a { |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
top: 0px; |
||||
|
left: 0px; |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
#searchResults .focus { |
||||
|
transform: scale(0.98); |
||||
|
border: 2px solid var(--tertiary); |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
.terms-tags li { |
||||
|
display: inline-block; |
||||
|
margin: 10px; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
.terms-tags a { |
||||
|
display: block; |
||||
|
padding: 3px 10px; |
||||
|
background: var(--tertiary); |
||||
|
border-radius: 6px; |
||||
|
transition: transform 0.1s; |
||||
|
} |
||||
|
|
||||
|
.terms-tags a:active { |
||||
|
background: var(--tertiary); |
||||
|
transform: scale(0.96); |
||||
|
} |
||||
@ -0,0 +1,6 @@ |
|||||
|
/* |
||||
|
PaperMod v7 |
||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE |
||||
|
Copyright (c) 2020 nanxiaobei and adityatelange |
||||
|
Copyright (c) 2021-2024 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,38 @@ |
|||||
|
: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); |
||||
|
} |
||||
|
|
||||
|
.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); |
||||
|
} |
||||
|
|
||||
|
.list { |
||||
|
background: var(--code-bg); |
||||
|
} |
||||
|
|
||||
|
.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,63 @@ |
|||||
|
/* from reset */ |
||||
|
::-webkit-scrollbar-track { |
||||
|
background: 0 0; |
||||
|
} |
||||
|
|
||||
|
.list:not(.dark)::-webkit-scrollbar-track { |
||||
|
background: var(--code-bg); |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb { |
||||
|
background: var(--tertiary); |
||||
|
border: 5px solid var(--theme); |
||||
|
border-radius: var(--radius); |
||||
|
} |
||||
|
|
||||
|
.list:not(.dark)::-webkit-scrollbar-thumb { |
||||
|
border: 5px solid var(--code-bg); |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar-thumb:hover { |
||||
|
background: var(--secondary); |
||||
|
} |
||||
|
|
||||
|
::-webkit-scrollbar:not(.highlighttable, .highlight table, .gist .highlight) { |
||||
|
background: var(--theme); |
||||
|
} |
||||
|
|
||||
|
/* from post-single */ |
||||
|
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.post-content :not(table) ::-webkit-scrollbar-thumb { |
||||
|
border: 2px solid var(--code-block-bg); |
||||
|
background: rgb(113, 113, 117); |
||||
|
} |
||||
|
|
||||
|
.post-content :not(table) ::-webkit-scrollbar-thumb:hover { |
||||
|
background: rgb(163, 163, 165); |
||||
|
} |
||||
|
|
||||
|
.gist table::-webkit-scrollbar-thumb { |
||||
|
border: 2px solid rgb(255, 255, 255); |
||||
|
background: rgb(173, 173, 173); |
||||
|
} |
||||
|
|
||||
|
.gist table::-webkit-scrollbar-thumb:hover { |
||||
|
background: rgb(112, 112, 112); |
||||
|
} |
||||
|
|
||||
|
.post-content table::-webkit-scrollbar-thumb { |
||||
|
border-width: 2px; |
||||
|
} |
||||
|
|
||||
|
/* from zmedia */ |
||||
|
@media screen and (min-width: 768px) { |
||||
|
|
||||
|
/* reset */ |
||||
|
::-webkit-scrollbar { |
||||
|
width: 19px; |
||||
|
height: 11px; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,152 @@ |
|||||
|
import * as params from '@params'; |
||||
|
|
||||
|
let fuse; // holds our search engine
|
||||
|
let resList = document.getElementById('searchResults'); |
||||
|
let sInput = document.getElementById('searchInput'); |
||||
|
let first, last, current_elem = null |
||||
|
let resultsAvailable = false; |
||||
|
|
||||
|
// load our search index
|
||||
|
window.onload = function () { |
||||
|
let xhr = new XMLHttpRequest(); |
||||
|
xhr.onreadystatechange = function () { |
||||
|
if (xhr.readyState === 4) { |
||||
|
if (xhr.status === 200) { |
||||
|
let data = JSON.parse(xhr.responseText); |
||||
|
if (data) { |
||||
|
// fuse.js options; check fuse.js website for details
|
||||
|
let options = { |
||||
|
distance: 100, |
||||
|
threshold: 0.4, |
||||
|
ignoreLocation: true, |
||||
|
keys: [ |
||||
|
'title', |
||||
|
'permalink', |
||||
|
'summary', |
||||
|
'content' |
||||
|
] |
||||
|
}; |
||||
|
if (params.fuseOpts) { |
||||
|
options = { |
||||
|
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 ?? ['title', 'permalink', 'summary', 'content'], |
||||
|
location: params.fuseOpts.location ?? 0, |
||||
|
threshold: params.fuseOpts.threshold ?? 0.4, |
||||
|
distance: params.fuseOpts.distance ?? 100, |
||||
|
ignoreLocation: params.fuseOpts.ignorelocation ?? true |
||||
|
} |
||||
|
} |
||||
|
fuse = new Fuse(data, options); // build the index from the json file
|
||||
|
} |
||||
|
} else { |
||||
|
console.log(xhr.responseText); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
xhr.open('GET', "../index.json"); |
||||
|
xhr.send(); |
||||
|
} |
||||
|
|
||||
|
function activeToggle(ae) { |
||||
|
document.querySelectorAll('.focus').forEach(function (element) { |
||||
|
// rm focus class
|
||||
|
element.classList.remove("focus") |
||||
|
}); |
||||
|
if (ae) { |
||||
|
ae.focus() |
||||
|
document.activeElement = current_elem = ae; |
||||
|
ae.parentElement.classList.add("focus") |
||||
|
} else { |
||||
|
document.activeElement.parentElement.classList.add("focus") |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function reset() { |
||||
|
resultsAvailable = false; |
||||
|
resList.innerHTML = sInput.value = ''; // clear inputbox and searchResults
|
||||
|
sInput.focus(); // shift focus to input box
|
||||
|
} |
||||
|
|
||||
|
// execute search as each character is typed
|
||||
|
sInput.onkeyup = function (e) { |
||||
|
// run a search query (for "term") every time a letter is typed
|
||||
|
// in the search box
|
||||
|
if (fuse) { |
||||
|
let results; |
||||
|
if (params.fuseOpts) { |
||||
|
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
|
||||
|
} else { |
||||
|
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
||||
|
} |
||||
|
if (results.length !== 0) { |
||||
|
// build our html if result exists
|
||||
|
let resultSet = ''; // our results bucket
|
||||
|
|
||||
|
for (let item in results) { |
||||
|
resultSet += `<li class="post-entry"><header class="entry-header">${results[item].item.title} »</header>` + |
||||
|
`<a href="${results[item].item.permalink}" aria-label="${results[item].item.title}"></a></li>` |
||||
|
} |
||||
|
|
||||
|
resList.innerHTML = resultSet; |
||||
|
resultsAvailable = true; |
||||
|
first = resList.firstChild; |
||||
|
last = resList.lastChild; |
||||
|
} else { |
||||
|
resultsAvailable = false; |
||||
|
resList.innerHTML = ''; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
sInput.addEventListener('search', function (e) { |
||||
|
// clicked on x
|
||||
|
if (!this.value) reset() |
||||
|
}) |
||||
|
|
||||
|
// kb bindings
|
||||
|
document.onkeydown = function (e) { |
||||
|
let key = e.key; |
||||
|
let ae = document.activeElement; |
||||
|
|
||||
|
let inbox = document.getElementById("searchbox").contains(ae) |
||||
|
|
||||
|
if (ae === sInput) { |
||||
|
let elements = document.getElementsByClassName('focus'); |
||||
|
while (elements.length > 0) { |
||||
|
elements[0].classList.remove('focus'); |
||||
|
} |
||||
|
} else if (current_elem) ae = current_elem; |
||||
|
|
||||
|
if (key === "Escape") { |
||||
|
reset() |
||||
|
} else if (!resultsAvailable || !inbox) { |
||||
|
return |
||||
|
} else if (key === "ArrowDown") { |
||||
|
e.preventDefault(); |
||||
|
if (ae == sInput) { |
||||
|
// if the currently focused element is the search input, focus the <a> of first <li>
|
||||
|
activeToggle(resList.firstChild.lastChild); |
||||
|
} else if (ae.parentElement != last) { |
||||
|
// if the currently focused element's parent is last, do nothing
|
||||
|
// otherwise select the next search result
|
||||
|
activeToggle(ae.parentElement.nextSibling.lastChild); |
||||
|
} |
||||
|
} else if (key === "ArrowUp") { |
||||
|
e.preventDefault(); |
||||
|
if (ae.parentElement == first) { |
||||
|
// if the currently focused element is first item, go to input box
|
||||
|
activeToggle(sInput); |
||||
|
} else if (ae != sInput) { |
||||
|
// if the currently focused element is input box, do nothing
|
||||
|
// otherwise select the previous search result
|
||||
|
activeToggle(ae.parentElement.previousSibling.lastChild); |
||||
|
} |
||||
|
} else if (key === "ArrowRight") { |
||||
|
ae.click(); // click on active link
|
||||
|
} |
||||
|
} |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,6 @@ |
|||||
|
/* |
||||
|
PaperMod v7 |
||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
|
Copyright (c) 2020 nanxiaobei and adityatelange |
||||
|
Copyright (c) 2021-2024 adityatelange |
||||
|
*/ |
||||
@ -0,0 +1,3 @@ |
|||||
|
module github.com/adityatelange/hugo-PaperMod |
||||
|
|
||||
|
go 1.12 |
||||
@ -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,19 @@ |
|||||
|
- id: prev_page |
||||
|
translation: "Pàgina anterior" |
||||
|
|
||||
|
- id: next_page |
||||
|
translation: "Pàgina següent" |
||||
|
|
||||
|
- id: read_time |
||||
|
translation: |
||||
|
one : "1 min" |
||||
|
other: "{{ .Count }} min" |
||||
|
|
||||
|
- id: toc |
||||
|
translation: "Taula de Continguts" |
||||
|
|
||||
|
- id: translations |
||||
|
translation: "Traduccions" |
||||
|
|
||||
|
- id: home |
||||
|
translation: "Inici" |
||||
@ -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: "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 : "word" |
||||
|
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: "已复制!" |
||||
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,3 @@ |
|||||
|
{{- define "main" }} |
||||
|
<div class="not-found">404</div> |
||||
|
{{- end }}{{/* end main */ -}} |
||||
@ -0,0 +1 @@ |
|||||
|
<img loading="lazy" src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title}} title="{{ . }}" {{ end }} /> |
||||
@ -0,0 +1,83 @@ |
|||||
|
{{- define "main" }} |
||||
|
|
||||
|
<header class="page-header"> |
||||
|
<h1> |
||||
|
{{ .Title }} |
||||
|
{{- if (.Param "ShowRssButtonInSectionTermList") }} |
||||
|
{{- $rss := (.OutputFormats.Get "rss") }} |
||||
|
{{- if (eq .Kind `page`) }} |
||||
|
{{- $rss = (.Parent.OutputFormats.Get "rss") }} |
||||
|
{{- end }} |
||||
|
{{- with $rss }} |
||||
|
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS"> |
||||
|
<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" height="23"> |
||||
|
<path d="M4 11a9 9 0 0 1 9 9" /> |
||||
|
<path d="M4 4a16 16 0 0 1 16 16" /> |
||||
|
<circle cx="5" cy="19" r="1" /> |
||||
|
</svg> |
||||
|
</a> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
</h1> |
||||
|
{{- if .Description }} |
||||
|
<div class="post-description"> |
||||
|
{{ .Description }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</header> |
||||
|
|
||||
|
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} |
||||
|
|
||||
|
{{- if site.Params.ShowAllPagesInArchive }} |
||||
|
{{- $pages = site.RegularPages }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- range $pages.GroupByPublishDate "2006" }} |
||||
|
{{- if ne .Key "0001" }} |
||||
|
<div class="archive-year"> |
||||
|
{{- $year := replace .Key "0001" "" }} |
||||
|
<h2 class="archive-year-header" id="{{ $year }}"> |
||||
|
<a class="archive-header-link" href="#{{ $year }}"> |
||||
|
{{- $year -}} |
||||
|
</a> |
||||
|
<sup class="archive-count"> {{ len .Pages }}</sup> |
||||
|
</h2> |
||||
|
{{- range .Pages.GroupByDate "January" }} |
||||
|
<div class="archive-month"> |
||||
|
<h3 class="archive-month-header" id="{{ $year }}-{{ .Key }}"> |
||||
|
<a class="archive-header-link" href="#{{ $year }}-{{ .Key }}"> |
||||
|
{{- .Key -}} |
||||
|
</a> |
||||
|
<sup class="archive-count"> {{ len .Pages }}</sup> |
||||
|
</h3> |
||||
|
<div class="archive-posts"> |
||||
|
{{- range .Pages }} |
||||
|
{{- if eq .Kind "page" }} |
||||
|
<div class="archive-entry"> |
||||
|
<h3 class="archive-entry-title entry-hint-parent"> |
||||
|
{{- .Title | markdownify }} |
||||
|
{{- if .Draft }} |
||||
|
<span class="entry-hint" title="Draft"> |
||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" fill="currentColor"> |
||||
|
<path |
||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" /> |
||||
|
</svg> |
||||
|
</span> |
||||
|
{{- end }} |
||||
|
</h3> |
||||
|
<div class="archive-meta"> |
||||
|
{{- partial "post_meta.html" . -}} |
||||
|
</div> |
||||
|
<a class="entry-link" aria-label="post link to {{ .Title | plainify }}" href="{{ .Permalink }}"></a> |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
</div> |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- end }}{{/* end main */}} |
||||
@ -0,0 +1,27 @@ |
|||||
|
{{- if lt hugo.Version "0.112.4" }} |
||||
|
{{- errorf "=> hugo v0.112.4 or greater is required for hugo-PaperMod to build " }} |
||||
|
{{- end -}} |
||||
|
|
||||
|
<!DOCTYPE html> |
||||
|
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}"> |
||||
|
|
||||
|
<head> |
||||
|
{{- partial "head.html" . }} |
||||
|
</head> |
||||
|
|
||||
|
<body class=" |
||||
|
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}} |
||||
|
{{- print "list" -}} |
||||
|
{{- end -}} |
||||
|
{{- if eq site.Params.defaultTheme `dark` -}} |
||||
|
{{- print " dark" }} |
||||
|
{{- end -}} |
||||
|
" id="top"> |
||||
|
{{- partialCached "header.html" . .Page -}} |
||||
|
<main class="main"> |
||||
|
{{- block "main" . }}{{ end }} |
||||
|
</main> |
||||
|
{{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}} |
||||
|
</body> |
||||
|
|
||||
|
</html> |
||||
@ -0,0 +1,7 @@ |
|||||
|
{{- $.Scratch.Add "index" slice -}} |
||||
|
{{- range site.RegularPages -}} |
||||
|
{{- if and (not .Params.searchHidden) (ne .Layout `archives`) (ne .Layout `search`) }} |
||||
|
{{- $.Scratch.Add "index" (dict "title" .Title "content" .Plain "permalink" .Permalink "summary" .Summary) -}} |
||||
|
{{- end }} |
||||
|
{{- end -}} |
||||
|
{{- $.Scratch.Get "index" | jsonify -}} |
||||
@ -0,0 +1,121 @@ |
|||||
|
{{- define "main" }} |
||||
|
|
||||
|
{{- if (and site.Params.profileMode.enabled .IsHome) }} |
||||
|
{{- partial "index_profile.html" . }} |
||||
|
{{- else }} {{/* if not profileMode */}} |
||||
|
|
||||
|
{{- if not .IsHome | and .Title }} |
||||
|
<header class="page-header"> |
||||
|
{{- partial "breadcrumbs.html" . }} |
||||
|
<h1> |
||||
|
{{ .Title }} |
||||
|
{{- if and (or (eq .Kind `term`) (eq .Kind `section`)) (.Param "ShowRssButtonInSectionTermList") }} |
||||
|
{{- with .OutputFormats.Get "rss" }} |
||||
|
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS"> |
||||
|
<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" height="23"> |
||||
|
<path d="M4 11a9 9 0 0 1 9 9" /> |
||||
|
<path d="M4 4a16 16 0 0 1 16 16" /> |
||||
|
<circle cx="5" cy="19" r="1" /> |
||||
|
</svg> |
||||
|
</a> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
</h1> |
||||
|
{{- if .Description }} |
||||
|
<div class="post-description"> |
||||
|
{{ .Description | markdownify }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</header> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- if .Content }} |
||||
|
<div class="post-content"> |
||||
|
{{- if not (.Param "disableAnchoredHeadings") }} |
||||
|
{{- partial "anchored_headings.html" .Content -}} |
||||
|
{{- else }}{{ .Content }}{{ end }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- $pages := union .RegularPages .Sections }} |
||||
|
|
||||
|
{{- if .IsHome }} |
||||
|
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }} |
||||
|
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- $paginator := .Paginate $pages }} |
||||
|
|
||||
|
{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }} |
||||
|
{{- partial "home_info.html" . }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- $term := .Data.Term }} |
||||
|
{{- range $index, $page := $paginator.Pages }} |
||||
|
|
||||
|
{{- $class := "post-entry" }} |
||||
|
|
||||
|
{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }} |
||||
|
{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }} |
||||
|
{{- $class = "first-entry" }} |
||||
|
{{- else if $term }} |
||||
|
{{- $class = "post-entry tag-entry" }} |
||||
|
{{- end }} |
||||
|
|
||||
|
<article class="{{ $class }}"> |
||||
|
{{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }} |
||||
|
{{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }} |
||||
|
<header class="entry-header"> |
||||
|
<h2 class="entry-hint-parent"> |
||||
|
{{- .Title }} |
||||
|
{{- if .Draft }} |
||||
|
<span class="entry-hint" title="Draft"> |
||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="20" viewBox="0 -960 960 960" fill="currentColor"> |
||||
|
<path |
||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" /> |
||||
|
</svg> |
||||
|
</span> |
||||
|
{{- end }} |
||||
|
</h2> |
||||
|
</header> |
||||
|
{{- if (ne (.Param "hideSummary") true) }} |
||||
|
<div class="entry-content"> |
||||
|
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p> |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
{{- if not (.Param "hideMeta") }} |
||||
|
<footer class="entry-footer"> |
||||
|
{{- partial "post_meta.html" . -}} |
||||
|
</footer> |
||||
|
{{- end }} |
||||
|
<a class="entry-link" aria-label="post link to {{ .Title | plainify }}" href="{{ .Permalink }}"></a> |
||||
|
</article> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- if gt $paginator.TotalPages 1 }} |
||||
|
<footer class="page-footer"> |
||||
|
<nav class="pagination"> |
||||
|
{{- if $paginator.HasPrev }} |
||||
|
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}"> |
||||
|
« {{ i18n "prev_page" }} |
||||
|
{{- if (.Param "ShowPageNums") }} |
||||
|
{{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }} |
||||
|
{{- end }} |
||||
|
</a> |
||||
|
{{- end }} |
||||
|
{{- if $paginator.HasNext }} |
||||
|
<a class="next" href="{{ $paginator.Next.URL | absURL }}"> |
||||
|
{{- i18n "next_page" }} |
||||
|
{{- if (.Param "ShowPageNums") }} |
||||
|
{{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }} |
||||
|
{{- end }} » |
||||
|
</a> |
||||
|
{{- end }} |
||||
|
</nav> |
||||
|
</footer> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- end }}{{/* end profileMode */}} |
||||
|
|
||||
|
{{- end }}{{- /* end main */ -}} |
||||
@ -0,0 +1,83 @@ |
|||||
|
{{- /* Deprecate site.Author.email in favor of site.Params.author.email */}} |
||||
|
{{- $authorEmail := "" }} |
||||
|
{{- with site.Params.author }} |
||||
|
{{- if reflect.IsMap . }} |
||||
|
{{- with .email }} |
||||
|
{{- $authorEmail = . }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
{{- else }} |
||||
|
{{- with site.Author.email }} |
||||
|
{{- $authorEmail = . }} |
||||
|
{{- warnf "The author key in site configuration is deprecated. Use params.author.email instead." }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- /* Deprecate site.Author.name in favor of site.Params.author.name */}} |
||||
|
{{- $authorName := "" }} |
||||
|
{{- with site.Params.author }} |
||||
|
{{- if reflect.IsMap . }} |
||||
|
{{- with .name }} |
||||
|
{{- $authorName = . }} |
||||
|
{{- end }} |
||||
|
{{- else }} |
||||
|
{{- $authorName = . }} |
||||
|
{{- end }} |
||||
|
{{- else }} |
||||
|
{{- with site.Author.name }} |
||||
|
{{- $authorName = . }} |
||||
|
{{- warnf "The author key in site configuration is deprecated. Use params.author.name instead." }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- $pctx := . }} |
||||
|
{{- if .IsHome }}{{ $pctx = site }}{{ end }} |
||||
|
{{- $pages := slice }} |
||||
|
{{- if or $.IsHome $.IsSection }} |
||||
|
{{- $pages = $pctx.RegularPages }} |
||||
|
{{- else }} |
||||
|
{{- $pages = $pctx.Pages }} |
||||
|
{{- end }} |
||||
|
{{- $limit := site.Config.Services.RSS.Limit }} |
||||
|
{{- if ge $limit 1 }} |
||||
|
{{- $pages = $pages | first $limit }} |
||||
|
{{- end }} |
||||
|
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }} |
||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"> |
||||
|
<channel> |
||||
|
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title> |
||||
|
<link>{{ .Permalink }}</link> |
||||
|
<description>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</description> |
||||
|
{{- with site.Params.images }} |
||||
|
<image> |
||||
|
<title>{{ site.Title }}</title> |
||||
|
<url>{{ index . 0 | absURL }}</url> |
||||
|
<link>{{ index . 0 | absURL }}</link> |
||||
|
</image> |
||||
|
{{- end }} |
||||
|
<generator>Hugo -- {{ hugo.Version }}</generator> |
||||
|
<language>{{ site.Language.LanguageCode }}</language>{{ with $authorEmail }} |
||||
|
<managingEditor>{{.}}{{ with $authorName }} ({{ . }}){{ end }}</managingEditor>{{ end }}{{ with $authorEmail }} |
||||
|
<webMaster>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</webMaster>{{ end }}{{ with site.Copyright }} |
||||
|
<copyright>{{ . | markdownify | plainify | strings.TrimPrefix "© " }}</copyright>{{ end }}{{ if not .Date.IsZero }} |
||||
|
<lastBuildDate>{{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }} |
||||
|
{{- with .OutputFormats.Get "RSS" }} |
||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }} |
||||
|
{{- end }} |
||||
|
{{- range $pages }} |
||||
|
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }} |
||||
|
<item> |
||||
|
<title>{{ .Title }}</title> |
||||
|
<link>{{ .Permalink }}</link> |
||||
|
<pubDate>{{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> |
||||
|
{{- with $authorEmail }}<author>{{ . }}{{ with $authorName }} ({{ . }}){{ end }}</author>{{ end }} |
||||
|
<guid>{{ .Permalink }}</guid> |
||||
|
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description> |
||||
|
{{- if and site.Params.ShowFullTextinRSS .Content }} |
||||
|
<content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded> |
||||
|
{{- end }} |
||||
|
</item> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
</channel> |
||||
|
</rss> |
||||
@ -0,0 +1,29 @@ |
|||||
|
{{- define "main" }} |
||||
|
|
||||
|
<header class="page-header"> |
||||
|
<h1>{{- (printf "%s " .Title ) | htmlUnescape -}} |
||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" |
||||
|
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> |
||||
|
<circle cx="11" cy="11" r="8"></circle> |
||||
|
<line x1="21" y1="21" x2="16.65" y2="16.65"></line> |
||||
|
</svg> |
||||
|
</h1> |
||||
|
{{- if .Description }} |
||||
|
<div class="post-description"> |
||||
|
{{ .Description }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
{{- if not (.Param "hideMeta") }} |
||||
|
<div class="post-meta"> |
||||
|
{{- partial "translation_list.html" . -}} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</header> |
||||
|
|
||||
|
<div id="searchbox"> |
||||
|
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s ↵" .Title) }}" |
||||
|
aria-label="search" type="search" autocomplete="off" maxlength="64"> |
||||
|
<ul id="searchResults" aria-label="search results"></ul> |
||||
|
</div> |
||||
|
|
||||
|
{{- end }}{{/* end main */}} |
||||
@ -0,0 +1,65 @@ |
|||||
|
{{- define "main" }} |
||||
|
|
||||
|
<article class="post-single"> |
||||
|
<header class="post-header"> |
||||
|
{{ partial "breadcrumbs.html" . }} |
||||
|
<h1 class="post-title entry-hint-parent"> |
||||
|
{{ .Title }} |
||||
|
{{- if .Draft }} |
||||
|
<span class="entry-hint" title="Draft"> |
||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="35" viewBox="0 -960 960 960" fill="currentColor"> |
||||
|
<path |
||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" /> |
||||
|
</svg> |
||||
|
</span> |
||||
|
{{- end }} |
||||
|
</h1> |
||||
|
{{- if .Description }} |
||||
|
<div class="post-description"> |
||||
|
{{ .Description }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
{{- if not (.Param "hideMeta") }} |
||||
|
<div class="post-meta"> |
||||
|
{{- partial "post_meta.html" . -}} |
||||
|
{{- partial "translation_list.html" . -}} |
||||
|
{{- partial "edit_post.html" . -}} |
||||
|
{{- partial "post_canonical.html" . -}} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</header> |
||||
|
{{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }} |
||||
|
{{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }} |
||||
|
{{- if (.Param "ShowToc") }} |
||||
|
{{- partial "toc.html" . }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- if .Content }} |
||||
|
<div class="post-content"> |
||||
|
{{- if not (.Param "disableAnchoredHeadings") }} |
||||
|
{{- partial "anchored_headings.html" .Content -}} |
||||
|
{{- else }}{{ .Content }}{{ end }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
|
||||
|
<footer class="post-footer"> |
||||
|
{{- $tags := .Language.Params.Taxonomies.tag | default "tags" }} |
||||
|
<ul class="post-tags"> |
||||
|
{{- range ($.GetTerms $tags) }} |
||||
|
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li> |
||||
|
{{- end }} |
||||
|
</ul> |
||||
|
{{- if (.Param "ShowPostNavLinks") }} |
||||
|
{{- partial "post_nav_links.html" . }} |
||||
|
{{- end }} |
||||
|
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }} |
||||
|
{{- partial "share_icons.html" . -}} |
||||
|
{{- end }} |
||||
|
</footer> |
||||
|
|
||||
|
{{- if (.Param "comments") }} |
||||
|
{{- partial "comments.html" . }} |
||||
|
{{- end }} |
||||
|
</article> |
||||
|
|
||||
|
{{- end }}{{/* end main */}} |
||||
@ -0,0 +1,27 @@ |
|||||
|
{{- define "main" }} |
||||
|
|
||||
|
{{- if .Title }} |
||||
|
<header class="page-header"> |
||||
|
<h1>{{ .Title }}</h1> |
||||
|
{{- if .Description }} |
||||
|
<div class="post-description"> |
||||
|
{{ .Description }} |
||||
|
</div> |
||||
|
{{- end }} |
||||
|
</header> |
||||
|
{{- end }} |
||||
|
|
||||
|
<ul class="terms-tags"> |
||||
|
{{- $type := .Type }} |
||||
|
{{- range $key, $value := .Data.Terms.Alphabetical }} |
||||
|
{{- $name := .Name }} |
||||
|
{{- $count := .Count }} |
||||
|
{{- with site.GetPage (printf "/%s/%s" $type $name) }} |
||||
|
<li> |
||||
|
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a> |
||||
|
</li> |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
</ul> |
||||
|
|
||||
|
{{- end }}{{/* end main */ -}} |
||||
@ -0,0 +1,2 @@ |
|||||
|
{{- /* 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,9 @@ |
|||||
|
{{- 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,19 @@ |
|||||
|
{{- if (.Param "ShowBreadCrumbs") -}} |
||||
|
<div class="breadcrumbs"> |
||||
|
{{- $url := replace .Parent.Permalink (printf "%s" site.Home.Permalink) "" }} |
||||
|
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}} |
||||
|
|
||||
|
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a> |
||||
|
{{- $scratch := newScratch }} |
||||
|
{{- range $index, $element := split $lang_url "/" }} |
||||
|
|
||||
|
{{- $scratch.Add "path" (printf "%s/" $element )}} |
||||
|
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}} |
||||
|
|
||||
|
{{- if (and ($bc_pg) (gt (len . ) 0))}} |
||||
|
{{- print " » " | safeHTML -}}<a href="{{ $bc_pg.Permalink }}">{{ $bc_pg.Name }}</a> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- end -}} |
||||
|
</div> |
||||
|
{{- end -}} |
||||
@ -0,0 +1,3 @@ |
|||||
|
{{- /* Comments area start */ -}} |
||||
|
{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}} |
||||
|
{{- /* Comments area end */ -}} |
||||
@ -0,0 +1,43 @@ |
|||||
|
{{- with .cxt}} {{/* Apply proper context from dict */}} |
||||
|
{{- if (and .Params.cover.image (not $.isHidden)) }} |
||||
|
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }} |
||||
|
{{- $loading := cond $.IsSingle "eager" "lazy" }} |
||||
|
<figure class="entry-cover"> |
||||
|
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }} |
||||
|
{{- $addLink := (and site.Params.cover.linkFullImages $.IsSingle) }} |
||||
|
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }} |
||||
|
{{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }} |
||||
|
{{- $cover := (or $pageBundleCover $globalResourcesCover)}} |
||||
|
{{- if $cover -}}{{/* i.e it is present in page bundle */}} |
||||
|
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" target="_blank" |
||||
|
rel="noopener noreferrer">{{ end -}} |
||||
|
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }} |
||||
|
{{- $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 $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 -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}" |
||||
|
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}" |
||||
|
width="{{ $cover.Width }}" height="{{ $cover.Height }}"> |
||||
|
{{- else }}{{/* Unprocessable image or responsive images disabled */}} |
||||
|
<img loading="{{$loading}}" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}"> |
||||
|
{{- end }} |
||||
|
{{- else }}{{/* For absolute urls and external links, no img processing here */}} |
||||
|
{{- if $addLink }}<a href="{{ (.Params.cover.image) | absURL }}" target="_blank" |
||||
|
rel="noopener noreferrer">{{ end -}} |
||||
|
<img loading="{{$loading}}" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}"> |
||||
|
{{- end }} |
||||
|
{{- if $addLink }}</a>{{ end -}} |
||||
|
{{/* Display Caption */}} |
||||
|
{{- if $.IsSingle }} |
||||
|
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }} |
||||
|
{{- end }} |
||||
|
</figure> |
||||
|
{{- end }}{{/* End image */}} |
||||
|
{{- end -}}{{/* End context */ -}} |
||||
@ -0,0 +1,8 @@ |
|||||
|
{{- if and (or .Params.editPost.URL site.Params.editPost.URL) (not (.Param "editPost.disabled")) -}} |
||||
|
{{- $fileUrlPath := path.Join .File.Path }} |
||||
|
|
||||
|
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }} | {{- end -}} |
||||
|
<a href="{{ .Params.editPost.URL | default site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer" target="_blank"> |
||||
|
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}} |
||||
|
</a> |
||||
|
{{- 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,144 @@ |
|||||
|
{{- 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 }} |
||||
|
|
||||
|
<span> |
||||
|
Powered by |
||||
|
<a href="https://gohugo.io/" rel="noopener noreferrer" 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" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g"> |
||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor"> |
||||
|
<path d="M12 6H0l6-6z" /> |
||||
|
</svg> |
||||
|
</a> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- partial "extend_footer.html" . }} |
||||
|
|
||||
|
<script> |
||||
|
let menu = document.getElementById('menu') |
||||
|
if (menu) { |
||||
|
menu.scrollLeft = localStorage.getItem("menu-scroll-position"); |
||||
|
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 mybutton = document.getElementById("top-link"); |
||||
|
window.onscroll = function () { |
||||
|
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { |
||||
|
mybutton.style.visibility = "visible"; |
||||
|
mybutton.style.opacity = "1"; |
||||
|
} else { |
||||
|
mybutton.style.visibility = "hidden"; |
||||
|
mybutton.style.opacity = "0"; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
</script> |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- if (not site.Params.disableThemeToggle) }} |
||||
|
<script> |
||||
|
document.getElementById("theme-toggle").addEventListener("click", () => { |
||||
|
if (document.body.className.includes("dark")) { |
||||
|
document.body.classList.remove('dark'); |
||||
|
localStorage.setItem("pref-theme", 'light'); |
||||
|
} else { |
||||
|
document.body.classList.add('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,157 @@ |
|||||
|
<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")}} |
||||
|
|
||||
|
{{- if not (eq site.Params.assets.disableScrollBarStyle true) }} |
||||
|
{{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }} |
||||
|
{{- $includes = (append $ScrollStyle $includes) }} |
||||
|
{{- end }} |
||||
|
|
||||
|
{{- $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 }}"> |
||||
|
{{ 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); |
||||
|
} |
||||
|
|
||||
|
.list { |
||||
|
background: var(--theme); |
||||
|
} |
||||
|
|
||||
|
.list:not(.dark)::-webkit-scrollbar-track { |
||||
|
background: 0 0; |
||||
|
} |
||||
|
|
||||
|
.list:not(.dark)::-webkit-scrollbar-thumb { |
||||
|
border-color: var(--theme); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
|
{{- end }} |
||||
|
</noscript> |
||||
|
|
||||
|
{{- partial "extend_head.html" . -}} |
||||
|
|
||||
|
{{- /* Misc */}} |
||||
|
{{- if hugo.IsProduction | or (eq site.Params.env "production") }} |
||||
|
{{- template "_internal/google_analytics.html" . }} |
||||
|
{{- template "partials/templates/opengraph.html" . }} |
||||
|
{{- template "partials/templates/twitter_cards.html" . }} |
||||
|
{{- template "partials/templates/schema_json.html" . }} |
||||
|
{{- end -}} |
||||
@ -0,0 +1,149 @@ |
|||||
|
{{- /* 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.body.classList.add('dark'); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
{{- /* theme is dark */}} |
||||
|
{{- else if (eq site.Params.defaultTheme "dark") }} |
||||
|
<script> |
||||
|
if (localStorage.getItem("pref-theme") === "light") { |
||||
|
document.body.classList.remove('dark') |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
{{- else }} |
||||
|
{{- /* theme is auto */}} |
||||
|
<script> |
||||
|
if (localStorage.getItem("pref-theme") === "dark") { |
||||
|
document.body.classList.add('dark'); |
||||
|
} else if (localStorage.getItem("pref-theme") === "light") { |
||||
|
document.body.classList.remove('dark') |
||||
|
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) { |
||||
|
document.body.classList.add('dark'); |
||||
|
} |
||||
|
|
||||
|
</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.body.classList.add('dark'); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
{{- end }} |
||||
|
|
||||
|
<header class="header"> |
||||
|
<nav class="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 }} |
||||
|
<div class="logo-switches"> |
||||
|
{{- if (not site.Params.disableThemeToggle) }} |
||||
|
<button id="theme-toggle" accesskey="t" title="(Alt + T)"> |
||||
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" 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 id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" 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 }} |
||||
|
|
||||
|
{{- $lang := .Lang}} |
||||
|
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}} |
||||
|
{{- with site.Home.Translations }} |
||||
|
<ul class="lang-switch"> |
||||
|
{{- if $separator }}<li>|</li>{{ end }} |
||||
|
{{- 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 }} |
||||
|
</div> |
||||
|
</div> |
||||
|
{{- $currentPage := . }} |
||||
|
<ul id="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,13 @@ |
|||||
|
{{- with site.Params.homeInfoParams }} |
||||
|
<article class="first-entry home-info"> |
||||
|
<header class="entry-header"> |
||||
|
<h1>{{ .Title | markdownify }}</h1> |
||||
|
</header> |
||||
|
<div class="entry-content"> |
||||
|
{{ .Content | markdownify }} |
||||
|
</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 }} |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue