mirror of
https://github.com/Wonderfall/hugo-WonderMod.git
synced 2025-04-19 23:15:57 -04:00
Compare commits
No commits in common. "master" and "v6.0" have entirely different histories.
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: adityatelange
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://www.buymeacoffee.com/adityatelange']
|
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -26,7 +26,7 @@ Please fill the template below
|
||||
- Device/Os: [e.g. Android 10]
|
||||
- Type: [e.g. Desktop/Mobile]
|
||||
- Browser and version [e.g. Chrome 86.0]:
|
||||
- Hugo Version [ >=0.112.4 expected]:
|
||||
- Hugo Version [ >=0.83.0 expected]:
|
||||
- Theme Version [e.g. v4.0, master, or commit-id ]:
|
||||
|
||||
**Steps to reproduce the behavior:**
|
||||
@ -40,9 +40,6 @@ Please fill the template below
|
||||
**Expected behavior**:
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
**Repo/Source where this issue can be reproduced**:
|
||||
<!-- Please link source code of website where the said issue can be reproduced -->
|
||||
|
||||
**Screenshots**
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
|
BIN
.github/assets/web-capture.jpeg
vendored
BIN
.github/assets/web-capture.jpeg
vendored
Binary file not shown.
Before Width: | Height: | Size: 74 KiB |
32
.github/workflows/build.yml
vendored
Normal file
32
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- exampleSite
|
||||
workflow_dispatch:
|
||||
# manual run
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: exampleSite
|
||||
|
||||
- name: Get Theme
|
||||
run: git submodule update --init --recursive
|
||||
|
||||
- name: Update theme to Latest commit
|
||||
run: git submodule update --remote --merge
|
||||
|
||||
- name: Setup hugo
|
||||
uses: peaceiris/actions-hugo@v2
|
||||
with:
|
||||
hugo-version: '0.83.0'
|
||||
|
||||
- name: Build
|
||||
run: hugo --buildDrafts --gc --verbose --minify
|
82
.github/workflows/gh-pages.yml
vendored
82
.github/workflows/gh-pages.yml
vendored
@ -1,80 +1,42 @@
|
||||
name: Deploy Hugo PaperMod Demo to Pages
|
||||
name: Build GH-Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- "images/**"
|
||||
- "LICENSE"
|
||||
- "README.md"
|
||||
- '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:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
HUGO_VERSION: "0.112.4"
|
||||
steps:
|
||||
- name: Check version
|
||||
if: ${{ github.event.inputs.hugoVersion }}
|
||||
run: export HUGO_VERSION="${{ github.event.inputs.hugoVersion }}"
|
||||
- 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
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@v2
|
||||
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 --verbose \
|
||||
--baseURL ${{ steps.pages.outputs.base_url }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
|
||||
- name: Setup hugo
|
||||
uses: peaceiris/actions-hugo@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
|
||||
hugo-version: '0.83.0'
|
||||
|
||||
- name: Build
|
||||
run: hugo --buildDrafts --gc --verbose --minify
|
||||
|
||||
- name: Deploy
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.TOKEN }}
|
||||
publish_dir: ./public
|
||||
|
2
LICENSE
2
LICENSE
@ -1,7 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
Copyright (c) 2021 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
|
||||
|
5
Makefile
5
Makefile
@ -1,5 +0,0 @@
|
||||
run-example:
|
||||
cd exampleSite && hugo server -D --gc -p 13131
|
||||
|
||||
chroma-css:
|
||||
hugo gen chromastyles --style=dracula > assets/css/common/chroma.css
|
109
README.md
109
README.md
@ -1,41 +1,90 @@
|
||||
## WonderMod (PaperMod fork - theme for Hugo)
|
||||
<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).
|
||||
> The goal of this project is to add more features and customization to the og theme.
|
||||
|
||||
The [demo](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of documentation about Installation, Features with a few more stuff. Make sure you visit it, to get an awesome hands-on experience and get to know about the features ...
|
||||
|
||||
**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://github.com/gohugoio/hugo/releases/tag/v0.83.0)
|
||||
[](https://github.com/adityatelange/hugo-PaperMod/deployments/activity_log?environment=github-pages)
|
||||
[](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE)
|
||||
[](https://themes.gohugo.io/themes/hugo-papermod/)
|
||||
[](https://sonarcloud.io/dashboard?id=adityatelange_hugo-PaperMod)
|
||||

|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/wonderfall/hugo-WonderMod/master/.github/assets/web-capture.jpeg" title="WonderMod" alt="WonderMod image">
|
||||
<kbd><img src="https://user-images.githubusercontent.com/21258296/114303440-bfc0ae80-9aeb-11eb-8cfa-48a4bb385a6d.png" alt="Mockup image" title="Mockup"/></kbd>
|
||||
</p>
|
||||
|
||||
### What is this?
|
||||
WonderMod is a fork of a theme for [Hugo](https://gohugo.io/) called [PaperMod](https://github.com/adityatelange/hugo-PaperMod) (made by adityatelange), which is based on [Paper](https://github.com/nanxiaobei/hugo-paper/). Since PaperMod isn't interested in a few changes such as **removing inline JavaScript**, which I personally require to harden my websites, I decided to maintain my own fork (I didn't want to keep overwriting a bunch of files as a fork workflow is much cleaner). Don't expect a ton of changes, and unless you know me, you probably don't want to use WonderMod.
|
||||
---
|
||||
|
||||
When implementing new features, I try to do as much as I can with pure CSS code instead of adding new JavaScript code. I'd like to keep the JavaScript part minimal and that's why WonderMod should be totally usable when disabling JavaScript. WonderMod is also designed with strong CSP headers in mind: no inline JavaScript or style, no calls to third-parties.
|
||||
## Features/Mods 💥
|
||||
|
||||
**This fork is regularly synced with upstream changes from [PaperMod](https://github.com/adityatelange/hugo-PaperMod).** A merging workflow was chosen since rebasing WonderMod's changes every time could be less efficient. As such, commit history is a bit messy, but upstream changes will be merged on a best effort basis.
|
||||
- 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
|
||||
- No webpack, nodejs and other dependencies are required to edit the theme.
|
||||
|
||||
### Main changes
|
||||
Current "main" changes are as follows:
|
||||
- Remove inline JavaScript
|
||||
- Improved YouTube shortcode
|
||||
- Built-in Chroma instead of client-side syntax highlighting with HLJS
|
||||
- Responsive Table of Contents with side display support
|
||||
- Responsive "hamburger" menu for mobile
|
||||
- Simple reading progress bar
|
||||
- Refactored RSS template (proper Atom feed)
|
||||
- Bunch of CSS and other changes
|
||||
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)**
|
||||
|
||||
### Credits
|
||||
Additional credits:
|
||||
- [PaperModX](https://github.com/reorx/hugo-PaperModX/) by reorx
|
||||
---
|
||||
|
||||
### Configure
|
||||
Most of the installation process and settings are shared with the original PaperMod, so check out [their documentation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation). One noticeable difference though is that in order to enable syntax highlighting, you have to add this to your `config.yml` :
|
||||
## Install/Update 📥
|
||||
|
||||
```
|
||||
markup:
|
||||
highlight:
|
||||
style: dracula
|
||||
noClasses: false
|
||||
guessSyntax: true
|
||||
```
|
||||
Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)**
|
||||
|
||||
See [Hugo documentation](https://gohugo.io/getting-started/configuration-markup#highlight) for more options.
|
||||
*Note: for some reason, the `guessSyntax` doesn't actually work but is required. Please make your code fences explicit for the time being.*
|
||||
---
|
||||
|
||||
## Social-Icons/Share-Icons 🖼️
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)**
|
||||
|
||||
---
|
||||
|
||||
## FAQs / How To's Guide 🙋
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)**
|
||||
|
||||
---
|
||||
|
||||
## 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/)
|
||||
|
||||
---
|
||||
|
||||
## 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**
|
||||
|
@ -1,82 +0,0 @@
|
||||
/* Background */ .chroma { color: #f8f8f2; background-color: #282a36 }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 20px; border: 0; width: auto; overflow: auto; display: block; }
|
||||
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Keyword */ .chroma .k { color: #ff79c6 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #ff79c6 }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #8be9fd; font-style: italic }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #ff79c6 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #ff79c6 }
|
||||
/* KeywordReserved */ .chroma .kr { color: #ff79c6 }
|
||||
/* KeywordType */ .chroma .kt { color: #8be9fd }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { color: #50fa7b }
|
||||
/* NameBuiltin */ .chroma .nb { color: #8be9fd; font-style: italic }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||
/* NameClass */ .chroma .nc { color: #50fa7b }
|
||||
/* NameConstant */ .chroma .no { }
|
||||
/* NameDecorator */ .chroma .nd { }
|
||||
/* NameEntity */ .chroma .ni { }
|
||||
/* NameException */ .chroma .ne { }
|
||||
/* NameFunction */ .chroma .nf { color: #50fa7b }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #8be9fd; font-style: italic }
|
||||
/* NameNamespace */ .chroma .nn { }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { }
|
||||
/* NameTag */ .chroma .nt { color: #ff79c6 }
|
||||
/* NameVariable */ .chroma .nv { color: #8be9fd; font-style: italic }
|
||||
/* NameVariableClass */ .chroma .vc { color: #8be9fd; font-style: italic }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #8be9fd; font-style: italic }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #8be9fd; font-style: italic }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #f1fa8c }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #f1fa8c }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #f1fa8c }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #f1fa8c }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #f1fa8c }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #f1fa8c }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #f1fa8c }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #f1fa8c }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #f1fa8c }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #f1fa8c }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #f1fa8c }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #f1fa8c }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #f1fa8c }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #f1fa8c }
|
||||
/* LiteralNumber */ .chroma .m { color: #bd93f9 }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #bd93f9 }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #bd93f9 }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #bd93f9 }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #bd93f9 }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #bd93f9 }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #bd93f9 }
|
||||
/* Operator */ .chroma .o { color: #ff79c6 }
|
||||
/* OperatorWord */ .chroma .ow { color: #ff79c6 }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #6272a4 }
|
||||
/* CommentHashbang */ .chroma .ch { color: #6272a4 }
|
||||
/* CommentMultiline */ .chroma .cm { color: #6272a4 }
|
||||
/* CommentSingle */ .chroma .c1 { color: #6272a4 }
|
||||
/* CommentSpecial */ .chroma .cs { color: #6272a4 }
|
||||
/* CommentPreproc */ .chroma .cp { color: #ff79c6 }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #ff79c6 }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #ff5555 }
|
||||
/* GenericEmph */ .chroma .ge { text-decoration: underline }
|
||||
/* GenericError */ .chroma .gr { }
|
||||
/* GenericHeading */ .chroma .gh { font-weight: bold }
|
||||
/* GenericInserted */ .chroma .gi { color: #50fa7b; font-weight: bold }
|
||||
/* GenericOutput */ .chroma .go { color: #44475a }
|
||||
/* GenericPrompt */ .chroma .gp { }
|
||||
/* GenericStrong */ .chroma .gs { }
|
||||
/* GenericSubheading */ .chroma .gu { font-weight: bold }
|
||||
/* GenericTraceback */ .chroma .gt { }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { }
|
@ -27,7 +27,7 @@
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.logo a img, .logo a svg {
|
||||
.logo a img {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
pointer-events: none;
|
||||
@ -36,6 +36,10 @@
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
|
||||
#theme-toggle svg {
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
button#theme-toggle {
|
||||
font-size: 26px;
|
||||
margin: auto 4px;
|
||||
@ -61,86 +65,6 @@ body:not(.dark) #sun {
|
||||
margin-inline-start: var(--gap);
|
||||
}
|
||||
|
||||
#hamburger-input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#hamburger-menu {
|
||||
display: none;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin: auto;
|
||||
margin-right: 13px;
|
||||
margin-left: 13px;
|
||||
background: linear-gradient(
|
||||
var(--primary), var(--primary) 20%,
|
||||
#ffffff00 20%, #ffffff00 40%,
|
||||
var(--primary) 40%, var(--primary) 60%,
|
||||
#ffffff00 60%, #ffffff00 80%,
|
||||
var(--primary) 80%, var(--primary) 100%
|
||||
);
|
||||
z-index: 10001;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
#menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#hamburger-menu {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#hamburger-input:checked ~ #hamburger-menu {
|
||||
background: none;
|
||||
}
|
||||
|
||||
#hamburger-input:checked ~ #hamburger-menu:after {
|
||||
content: "\00d7";
|
||||
position: fixed;
|
||||
font-size: 28px;
|
||||
line-height: 0;
|
||||
top: 28px;
|
||||
}
|
||||
|
||||
#hamburger-input:checked ~ .overlay {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
#hamburger-input:checked ~ #menu {
|
||||
display: block;
|
||||
width: 80%;
|
||||
margin: auto;
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-right: -50%;
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 10002;
|
||||
}
|
||||
|
||||
#menu li {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#menu li + li {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
background: var(--theme);
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
#menu a {
|
||||
font-size: 16px;
|
||||
}
|
||||
@ -171,12 +95,3 @@ body:not(.dark) #sun {
|
||||
.logo-switches {
|
||||
flex-wrap: inherit;
|
||||
}
|
||||
|
||||
#progressBar {
|
||||
--scrollAmount: 0%;
|
||||
width: var(--scrollAmount);
|
||||
height: 3px;
|
||||
background-color: #1e8cdb;
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
}
|
@ -27,10 +27,12 @@
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
|
||||
.social-icons {
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
.social-icons a {
|
||||
display: inline-flex;
|
||||
padding: 10px;
|
||||
.social-icons a:not(:last-of-type) {
|
||||
margin-inline-end: 12px;
|
||||
}
|
||||
|
||||
.social-icons a svg {
|
||||
|
@ -3,7 +3,7 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
min-height: 220px;
|
||||
min-height: 320px;
|
||||
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
.first-entry .entry-header h1 {
|
||||
font-size: 34px;
|
||||
line-height: 1.4;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.first-entry .entry-content {
|
||||
@ -80,17 +80,13 @@
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.entry-hint {
|
||||
.entry-cover,
|
||||
.entry-isdraft {
|
||||
font-size: 14px;
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.entry-hint-parent {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.entry-cover {
|
||||
font-size: 14px;
|
||||
margin-bottom: var(--gap);
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@
|
||||
|
||||
.post-content a,
|
||||
.toc a:hover {
|
||||
border-bottom: 1px solid var(--primary);
|
||||
box-shadow: 0 1px 0;
|
||||
}
|
||||
|
||||
.post-content a code {
|
||||
@ -81,7 +81,8 @@
|
||||
}
|
||||
|
||||
.post-content del {
|
||||
text-decoration: line-through;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(to right, var(--primary) 100%, transparent 0) 0 50%/1px 1px repeat-x;
|
||||
}
|
||||
|
||||
.post-content dl,
|
||||
@ -128,18 +129,19 @@
|
||||
}
|
||||
|
||||
.post-content table {
|
||||
margin-bottom: var(--content-gap);
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.post-content table th,
|
||||
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
|
||||
min-width: 80px;
|
||||
padding: 8px 5px;
|
||||
padding: 12px 8px;
|
||||
line-height: 1.5;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.post-content table th {
|
||||
font-size: 14px;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
@ -151,10 +153,11 @@
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.post-content .highlight:not(table) {
|
||||
.post-content .highlight:not(table),
|
||||
.post-content pre {
|
||||
margin: 10px auto;
|
||||
background: var(--hljs-bg) !important;
|
||||
border-radius: var(--radius);
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.post-content li > .highlight {
|
||||
@ -190,35 +193,26 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* code block */
|
||||
.post-content .chroma {
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.post-content code {
|
||||
/* inline code */
|
||||
background-color: var(--tertiary);
|
||||
margin: auto 4px;
|
||||
padding: 4px 6px;
|
||||
font-size: 0.78em;
|
||||
line-height: 1.5;
|
||||
border-radius: 4px;
|
||||
background: var(--code-bg);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.post-content pre code {
|
||||
/* reset inline code */
|
||||
background-color: unset;
|
||||
display: block;
|
||||
margin: 20px;
|
||||
margin: auto 0;
|
||||
padding: 10px;
|
||||
color: rgb(213, 213, 214);
|
||||
background: 0 0;
|
||||
border-radius: 0;
|
||||
overflow-x: auto;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.post-content .chroma code {
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
.post-content blockquote {
|
||||
margin: 20px 0;
|
||||
padding: 0 14px;
|
||||
@ -229,7 +223,8 @@
|
||||
margin: 30px 0;
|
||||
height: 2px;
|
||||
background: var(--tertiary);
|
||||
border: 0;
|
||||
border-top: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.post-content iframe {
|
||||
@ -265,32 +260,24 @@
|
||||
.toc {
|
||||
margin: 0 2px 40px 2px;
|
||||
border: 1px solid var(--border);
|
||||
background: var(--tertiary);
|
||||
background: var(--code-bg);
|
||||
border-radius: var(--radius);
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1400px) {
|
||||
.toc.side {
|
||||
position: fixed;
|
||||
right: 30px;
|
||||
top: 100px;
|
||||
width: 300px;
|
||||
font-size: .9em;
|
||||
max-height: calc(100% - 150px);
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.dark .toc {
|
||||
background: var(--entry);
|
||||
}
|
||||
|
||||
.toc details summary {
|
||||
cursor: pointer;
|
||||
cursor: zoom-in;
|
||||
margin-inline-start: 20px;
|
||||
}
|
||||
|
||||
.toc details[open] summary {
|
||||
cursor: zoom-out;
|
||||
}
|
||||
|
||||
.toc .details {
|
||||
display: inline;
|
||||
font-weight: 500;
|
||||
@ -313,21 +300,14 @@
|
||||
margin-top: 56px;
|
||||
}
|
||||
|
||||
.post-footer>* {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.post-tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.post-tags li {
|
||||
display: inline-block;
|
||||
margin-inline-end: 3px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.post-tags a,
|
||||
.share-buttons,
|
||||
.paginav {
|
||||
border-radius: var(--radius);
|
||||
background: var(--code-bg);
|
||||
@ -336,37 +316,52 @@
|
||||
|
||||
.post-tags a {
|
||||
display: block;
|
||||
padding: 0 14px;
|
||||
padding-inline-start: 14px;
|
||||
padding-inline-end: 14px;
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
line-height: 34px;
|
||||
background: var(--tertiary);
|
||||
background: var(--code-bg);
|
||||
}
|
||||
|
||||
.post-tags a:hover,
|
||||
.paginav a:hover {
|
||||
background: var(--border);
|
||||
}
|
||||
|
||||
.share-buttons {
|
||||
padding: 10px;
|
||||
margin: 14px 0;
|
||||
padding-inline-start: var(--radius);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow-x: auto;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.share-buttons li,
|
||||
.share-buttons a {
|
||||
display: inline-flex;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.share-buttons a:not(:last-of-type) {
|
||||
margin-inline-end: 12px;
|
||||
}
|
||||
|
||||
.share-buttons a svg {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
fill: currentColor;
|
||||
transition: transform 0.1s;
|
||||
}
|
||||
|
||||
.share-buttons svg:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
h1:hover .anchor,
|
||||
h2:hover .anchor,
|
||||
h3:hover .anchor,
|
||||
h4:hover .anchor,
|
||||
h5:hover .anchor,
|
||||
h6:hover .anchor {
|
||||
border-bottom: none;
|
||||
display: inline-flex;
|
||||
color: var(--secondary);
|
||||
margin-inline-start: 8px;
|
||||
@ -374,12 +369,33 @@ h6:hover .anchor {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
||||
border: 2px solid var(--hljs-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;
|
||||
}
|
||||
|
||||
.paginav {
|
||||
margin: 10px 0;
|
||||
display: flex;
|
||||
line-height: 30px;
|
||||
border-radius: var(--radius);
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.paginav a {
|
||||
@ -412,12 +428,3 @@ h6:hover .anchor {
|
||||
[dir="rtl"] .paginav .next {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1>a>svg {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
img.in-text {
|
||||
display: inline;
|
||||
margin: auto;
|
||||
}
|
||||
|
@ -10,20 +10,20 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.profile .profile_inner {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
.profile .profile_inner h1 {
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
.profile img {
|
||||
display: inline-table;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
flex-wrap: wrap;
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.button {
|
||||
|
@ -1,6 +0,0 @@
|
||||
/*
|
||||
PaperMod v7
|
||||
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
*/
|
@ -7,9 +7,6 @@
|
||||
html {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
overflow-y: scroll;
|
||||
scroll-behavior: smooth;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
a,
|
||||
@ -117,3 +114,25 @@ img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
::-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);
|
||||
}
|
||||
|
@ -6,25 +6,27 @@
|
||||
--header-height: 60px;
|
||||
--footer-height: 60px;
|
||||
--radius: 8px;
|
||||
--theme: #e2e4f2;
|
||||
--entry: #efefff;
|
||||
--theme: rgb(255, 255, 255);
|
||||
--entry: rgb(255, 255, 255);
|
||||
--primary: rgb(30, 30, 30);
|
||||
--secondary: rgb(108, 108, 108);
|
||||
--tertiary: #c3c5d0;
|
||||
--tertiary: rgb(214, 214, 214);
|
||||
--content: rgb(31, 31, 31);
|
||||
--code-bg: #e2e4f2;
|
||||
--hljs-bg: rgb(28, 29, 33);
|
||||
--code-bg: rgb(245, 245, 245);
|
||||
--border: rgb(238, 238, 238);
|
||||
}
|
||||
|
||||
.dark {
|
||||
--theme: #1f2125;
|
||||
--entry: #26282e;
|
||||
--theme: rgb(29, 30, 32);
|
||||
--entry: rgb(46, 46, 51);
|
||||
--primary: rgb(218, 218, 219);
|
||||
--secondary: rgb(155, 156, 157);
|
||||
--tertiary: #3a3c42;
|
||||
--tertiary: rgb(65, 66, 68);
|
||||
--content: rgb(196, 196, 197);
|
||||
--hljs-bg: rgb(46, 46, 51);
|
||||
--code-bg: rgb(55, 56, 62);
|
||||
--border: none;
|
||||
--border: rgb(51, 51, 51);
|
||||
}
|
||||
|
||||
.list {
|
||||
|
@ -29,6 +29,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
/* reset */
|
||||
::-webkit-scrollbar {
|
||||
width: 19px;
|
||||
height: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
/* footer */
|
||||
@media screen and (max-width: 900px) {
|
||||
.list .top-link {
|
||||
@ -36,16 +44,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
@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,
|
||||
.share-buttons svg:active,
|
||||
.post-entry:active,
|
||||
.top-link,
|
||||
#searchResults .focus,
|
||||
|
@ -1,16 +0,0 @@
|
||||
.youtube-embed-div {
|
||||
position: relative;
|
||||
padding-bottom: 56.25%;
|
||||
margin-bottom: 20px;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.youtube-embed-frame {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
}
|
63
assets/css/hljs/an-old-hope.min.css
vendored
Normal file
63
assets/css/hljs/an-old-hope.min.css
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #b6b18b;
|
||||
}
|
||||
|
||||
.hljs-deletion,
|
||||
.hljs-name,
|
||||
.hljs-regexp,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-id,
|
||||
.hljs-tag,
|
||||
.hljs-template-variable,
|
||||
.hljs-variable {
|
||||
color: #eb3c54;
|
||||
}
|
||||
|
||||
.hljs-built_in,
|
||||
.hljs-builtin-name,
|
||||
.hljs-link,
|
||||
.hljs-literal,
|
||||
.hljs-meta,
|
||||
.hljs-number,
|
||||
.hljs-params,
|
||||
.hljs-type {
|
||||
color: #e7ce56;
|
||||
}
|
||||
|
||||
.hljs-attribute {
|
||||
color: #ee7c2b;
|
||||
}
|
||||
|
||||
.hljs-addition,
|
||||
.hljs-bullet,
|
||||
.hljs-string,
|
||||
.hljs-symbol {
|
||||
color: #4fb4d7;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-title {
|
||||
color: #78bb65;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
color: #b45ea4;
|
||||
}
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
background: #1c1d21;
|
||||
color: #c0c5ce;
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.hljs-strong {
|
||||
font-weight: 700;
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#searchInput {
|
||||
display: none;
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
/* 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(--hljs-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;
|
||||
}
|
||||
}
|
||||
|
||||
/* side ToC */
|
||||
|
||||
.toc.side::-webkit-scrollbar-thumb {
|
||||
border: none;
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
||||
.toc.side::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
/* code */
|
||||
|
||||
.highlight pre code::-webkit-scrollbar {
|
||||
height: 6px;
|
||||
}
|
@ -1,21 +1,21 @@
|
||||
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;
|
||||
var fuse; // holds our search engine
|
||||
var resList = document.getElementById('searchResults');
|
||||
var sInput = document.getElementById('searchInput');
|
||||
var first, last, current_elem = null
|
||||
var resultsAvailable = false;
|
||||
|
||||
// load our search index
|
||||
window.onload = function () {
|
||||
let xhr = new XMLHttpRequest();
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
let data = JSON.parse(xhr.responseText);
|
||||
var data = JSON.parse(xhr.responseText);
|
||||
if (data) {
|
||||
// fuse.js options; check fuse.js website for details
|
||||
let options = {
|
||||
var options = {
|
||||
distance: 100,
|
||||
threshold: 0.4,
|
||||
ignoreLocation: true,
|
||||
@ -28,17 +28,17 @@ window.onload = function () {
|
||||
};
|
||||
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
|
||||
isCaseSensitive: params.fuseOpts.iscasesensitive ? params.fuseOpts.iscasesensitive : false,
|
||||
includeScore: params.fuseOpts.includescore ? params.fuseOpts.includescore : false,
|
||||
includeMatches: params.fuseOpts.includematches ? params.fuseOpts.includematches : false,
|
||||
minMatchCharLength: params.fuseOpts.minmatchcharlength ? params.fuseOpts.minmatchcharlength : 1,
|
||||
shouldSort: params.fuseOpts.shouldsort ? params.fuseOpts.shouldsort : true,
|
||||
findAllMatches: params.fuseOpts.findallmatches ? params.fuseOpts.findallmatches : false,
|
||||
keys: params.fuseOpts.keys ? params.fuseOpts.keys : ['title', 'permalink', 'summary', 'content'],
|
||||
location: params.fuseOpts.location ? params.fuseOpts.location : 0,
|
||||
threshold: params.fuseOpts.threshold ? params.fuseOpts.threshold : 0.4,
|
||||
distance: params.fuseOpts.distance ? params.fuseOpts.distance : 100,
|
||||
ignoreLocation: params.fuseOpts.ignorelocation ? params.fuseOpts.ignorelocation : true
|
||||
}
|
||||
}
|
||||
fuse = new Fuse(data, options); // build the index from the json file
|
||||
@ -77,12 +77,7 @@ 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
|
||||
}
|
||||
const 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
|
||||
@ -111,12 +106,12 @@ sInput.addEventListener('search', function (e) {
|
||||
// kb bindings
|
||||
document.onkeydown = function (e) {
|
||||
let key = e.key;
|
||||
let ae = document.activeElement;
|
||||
var ae = document.activeElement;
|
||||
|
||||
let inbox = document.getElementById("searchbox").contains(ae)
|
||||
|
||||
if (ae === sInput) {
|
||||
let elements = document.getElementsByClassName('focus');
|
||||
var elements = document.getElementsByClassName('focus');
|
||||
while (elements.length > 0) {
|
||||
elements[0].classList.remove('focus');
|
||||
}
|
||||
|
9
assets/js/fuse.basic.min.js
vendored
9
assets/js/fuse.basic.min.js
vendored
File diff suppressed because one or more lines are too long
9
assets/js/fuse.js
Normal file
9
assets/js/fuse.js
Normal file
File diff suppressed because one or more lines are too long
44
assets/js/highlight.min.js
vendored
Normal file
44
assets/js/highlight.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,6 +0,0 @@
|
||||
/*
|
||||
PaperMod v7
|
||||
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2023 adityatelange
|
||||
*/
|
@ -1,106 +0,0 @@
|
||||
import * as params from '@params';
|
||||
|
||||
function scrollToTop() {
|
||||
const topButton = document.getElementById("top-link");
|
||||
|
||||
document.addEventListener('scroll', () => {
|
||||
if (document.body.scrollTop > 600 || document.documentElement.scrollTop > 600) {
|
||||
topButton.style.visibility = "visible";
|
||||
topButton.style.opacity = "1";
|
||||
} else {
|
||||
topButton.style.visibility = "hidden";
|
||||
topButton.style.opacity = "0";
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function themeToggle() {
|
||||
const themeButton = document.getElementById("theme-toggle");
|
||||
|
||||
themeButton.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');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function showCodeCopyButtons() {
|
||||
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||||
const container = codeblock.parentNode.parentNode;
|
||||
|
||||
const copybutton = document.createElement('button');
|
||||
copybutton.classList.add('copy-code');
|
||||
copybutton.innerHTML = 'copy';
|
||||
|
||||
function copyingDone() {
|
||||
copybutton.innerHTML = 'copied!';
|
||||
setTimeout(() => {
|
||||
copybutton.innerHTML = '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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openToc() {
|
||||
const toc = document.getElementById("toc");
|
||||
|
||||
if (!toc) return;
|
||||
|
||||
if (window.innerWidth > 1500 && window.innerHeight > 800) {
|
||||
toc.open = true;
|
||||
}
|
||||
}
|
||||
|
||||
function progressBar() {
|
||||
const bar = document.getElementById("progressBar");
|
||||
|
||||
if (!bar) return;
|
||||
|
||||
document.addEventListener('scroll', () => {
|
||||
let scrollPercent = document.documentElement.scrollTop / (document.documentElement.scrollHeight - window.innerHeight) * 100;
|
||||
if (scrollPercent >= 99) { scrollPercent = 0 };
|
||||
bar.style.setProperty("--scrollAmount", scrollPercent + '%');
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (params.scrollToTop) scrollToTop();
|
||||
if (params.themeToggle) themeToggle();
|
||||
if (params.showCodeCopyButtons) showCodeCopyButtons();
|
||||
openToc();
|
||||
progressBar();
|
@ -1,12 +0,0 @@
|
||||
function loadPreferredTheme() {
|
||||
const preferredTheme = localStorage.getItem("pref-theme");
|
||||
const isDarkTheme = document.body.classList.contains("dark");
|
||||
|
||||
if (preferredTheme === "light" && isDarkTheme) {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (preferredTheme === "dark" && !isDarkTheme) {
|
||||
document.body.classList.add('dark')
|
||||
}
|
||||
}
|
||||
|
||||
loadPreferredTheme();
|
2
go.mod
2
go.mod
@ -1,3 +1,3 @@
|
||||
module github.com/Wonderfall/hugo-WonderMod
|
||||
module github.com/adityatelange/hugo-PaperMod
|
||||
|
||||
go 1.12
|
||||
|
10
i18n/ar.yaml
10
i18n/ar.yaml
@ -1,8 +1,8 @@
|
||||
- id: prev_page
|
||||
translation: "السابق"
|
||||
translation: "الصفحة السابقة"
|
||||
|
||||
- id: next_page
|
||||
translation: "التالي"
|
||||
translation: "الصفحة التالية"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
@ -20,9 +20,3 @@
|
||||
|
||||
- id: home
|
||||
translation: "الصفحة الرئيسية"
|
||||
|
||||
- id: code_copied
|
||||
translation: "تم النسخ!"
|
||||
|
||||
- id: code_copy
|
||||
translation: "نسخ الكود"
|
||||
|
39
i18n/be.yaml
39
i18n/be.yaml
@ -1,39 +0,0 @@
|
||||
- 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: "скапіявана!"
|
@ -1,18 +1,13 @@
|
||||
- id: prev_page
|
||||
translation: "পূর্ববর্তী"
|
||||
translation: "পূর্বের পাতা"
|
||||
|
||||
- id: next_page
|
||||
translation: "পরবর্তী"
|
||||
translation: "পরবর্তী পাতা"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "১ মিনিট"
|
||||
other: "{{ .Count }} মিনিট"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "১ টি শব্দ"
|
||||
other: "{{ .Count }} টি শব্দ"
|
||||
|
||||
- id: toc
|
||||
translation: "সূচিপত্র"
|
||||
|
33
i18n/cs.yaml
33
i18n/cs.yaml
@ -1,33 +0,0 @@
|
||||
- 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!"
|
22
i18n/de.yaml
22
i18n/de.yaml
@ -1,18 +1,13 @@
|
||||
- id: prev_page
|
||||
translation: "Vorherige"
|
||||
translation: "Vorherige Seite"
|
||||
|
||||
- id: next_page
|
||||
translation: "Nächste"
|
||||
translation: "Nächste Seite"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 Minute"
|
||||
other: "{{ .Count }} Minuten"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "Wort"
|
||||
other: "{{ .Count }} Wörter"
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: toc
|
||||
translation: "Inhaltsverzeichnis"
|
||||
@ -20,14 +15,5 @@
|
||||
- id: translations
|
||||
translation: "Übersetzungen"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Bearbeiten"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Kopieren"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Kopiert!"
|
||||
|
33
i18n/el.yaml
33
i18n/el.yaml
@ -1,33 +0,0 @@
|
||||
- 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: "αντιγράφηκε!"
|
12
i18n/en.yaml
12
i18n/en.yaml
@ -1,19 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "Prev"
|
||||
translation: "Prev Page"
|
||||
|
||||
- id: next_page
|
||||
translation: "Next"
|
||||
translation: "Next Page"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "word"
|
||||
other: "{{ .Count }} words"
|
||||
|
||||
- id: toc
|
||||
translation: "Table of Contents"
|
||||
|
||||
@ -23,9 +18,6 @@
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Edit"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copy"
|
||||
|
||||
|
14
i18n/es.yaml
14
i18n/es.yaml
@ -1,19 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "Anterior"
|
||||
translation: "Página anterior"
|
||||
|
||||
- id: next_page
|
||||
translation: "Siguiente"
|
||||
translation: "Página 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"
|
||||
|
||||
@ -23,11 +18,8 @@
|
||||
- id: home
|
||||
translation: "Inicio"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Editar"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copiar"
|
||||
|
||||
- id: code_copied
|
||||
translation: "¡copiado!"
|
||||
translation: "¡copiado!"
|
15
i18n/fr.yaml
15
i18n/fr.yaml
@ -1,21 +1,16 @@
|
||||
- id: prev_page
|
||||
translation: "Précédent"
|
||||
translation: "Page Précédente"
|
||||
|
||||
- id: next_page
|
||||
translation: "Suivant"
|
||||
translation: "Page Suivante"
|
||||
|
||||
- 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"
|
||||
translation: "Table des Matières"
|
||||
|
||||
- id: translations
|
||||
translation: "Traductions"
|
||||
@ -27,7 +22,7 @@
|
||||
translation: "Modifier"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Copier"
|
||||
translation: "copier"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Copié !"
|
||||
translation: "copié!"
|
||||
|
24
i18n/he.yaml
24
i18n/he.yaml
@ -1,33 +1,19 @@
|
||||
- id: prev_page
|
||||
translation: "קודם"
|
||||
translation: "לעמוד הקודם"
|
||||
|
||||
- id: next_page
|
||||
translation: "הבא"
|
||||
translation: "לעמוד הבא"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "דקה אחת"
|
||||
other: "דקות {{ .Count }}"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "word"
|
||||
other: "מילים {{ .Count }} "
|
||||
other: "{{ .Count }} דקות"
|
||||
|
||||
- id: toc
|
||||
translation: "תוכן העניינים"
|
||||
translation: "תוכן עניינים"
|
||||
|
||||
- id: translations
|
||||
translation: "תרגומים"
|
||||
|
||||
- id: home
|
||||
translation: "בית"
|
||||
|
||||
- id: edit_post
|
||||
translation: "ערוך"
|
||||
|
||||
- id: code_copy
|
||||
translation: "העתק"
|
||||
|
||||
- id: code_copied
|
||||
translation: "!הועתק"
|
||||
translation: "דף בית"
|
||||
|
@ -1,17 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "पिछला"
|
||||
translation: "पिछला पृष्ठ"
|
||||
|
||||
- id: next_page
|
||||
translation: "अगला"
|
||||
translation: "अगला पृष्ठ"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "एक मिनट"
|
||||
other: "{{ .Count }} मिनट"
|
||||
|
||||
- id: edit_post
|
||||
translation: "सुधारें"
|
||||
|
||||
- id: toc
|
||||
translation: "विषय - सूची"
|
||||
|
||||
|
33
i18n/hr.yaml
33
i18n/hr.yaml
@ -1,33 +0,0 @@
|
||||
- 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!"
|
23
i18n/id.yaml
23
i18n/id.yaml
@ -1,33 +1,16 @@
|
||||
- id: prev_page
|
||||
translation: "Sebelumnya"
|
||||
translation: "Halaman Sebelumnya"
|
||||
|
||||
- id: next_page
|
||||
translation: "Selanjutnya"
|
||||
translation: "Halaman Selanjutnya"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 menit"
|
||||
other: "{{ .Count }} menit"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "kata"
|
||||
other: "{{ .Count }} kata"
|
||||
|
||||
- id: toc
|
||||
translation: "Daftar isi"
|
||||
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!"
|
17
i18n/it.yaml
17
i18n/it.yaml
@ -1,31 +1,20 @@
|
||||
- id: prev_page
|
||||
translation: "Precedente"
|
||||
translation: "Pag Prec"
|
||||
|
||||
- id: next_page
|
||||
translation: "Successivo"
|
||||
translation: "Pag Succ"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 minuto"
|
||||
other: "{{ .Count }} minuti"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "parola"
|
||||
other: "{{ .Count }} parole"
|
||||
|
||||
- id: toc
|
||||
translation: "Indice contenuti"
|
||||
translation: "Tabella dei Contenuti"
|
||||
|
||||
- id: translations
|
||||
translation: "Traduzioni"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Modifica"
|
||||
|
||||
- id: code_copy
|
||||
translation: "copia"
|
||||
|
||||
|
21
i18n/ja.yaml
21
i18n/ja.yaml
@ -1,33 +1,16 @@
|
||||
- id: prev_page
|
||||
translation: "前へ"
|
||||
translation: "前のページ"
|
||||
|
||||
- id: next_page
|
||||
translation: "次へ"
|
||||
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: "コピーされました!"
|
||||
|
12
i18n/ko.yaml
12
i18n/ko.yaml
@ -9,11 +9,6 @@
|
||||
one : "1 분"
|
||||
other: "{{ .Count }} 분"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "단어"
|
||||
other: "{{ .Count }} 단어"
|
||||
|
||||
- id: toc
|
||||
translation: "목차"
|
||||
|
||||
@ -21,13 +16,10 @@
|
||||
translation: "번역"
|
||||
|
||||
- id: home
|
||||
translation: "홈"
|
||||
|
||||
- id: edit_post
|
||||
translation: "편집"
|
||||
translation: "홈페이지"
|
||||
|
||||
- id: code_copy
|
||||
translation: "복사"
|
||||
|
||||
- id: code_copied
|
||||
translation: "복사 완료!"
|
||||
translation: "복사완료!"
|
||||
|
10
i18n/ku.yaml
10
i18n/ku.yaml
@ -1,8 +1,8 @@
|
||||
- id: prev_page
|
||||
translation: "Rûpela Paş"
|
||||
translation: "Rêpela Berê"
|
||||
|
||||
- id: next_page
|
||||
translation: "Rûpela Pêş"
|
||||
translation: "Rûpela Bê"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
@ -13,13 +13,13 @@
|
||||
translation: "Pêrist"
|
||||
|
||||
- id: translations
|
||||
translation: "Wergeran"
|
||||
translation: "Wergêranan"
|
||||
|
||||
- id: home
|
||||
translation: "Xanî"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Jê bigire"
|
||||
translation: "Jê bigre"
|
||||
|
||||
- id: code_copied
|
||||
translation: "Hat jêgirtin!"
|
||||
translation: "Hat jê girtin!"
|
||||
|
28
i18n/ms.yaml
28
i18n/ms.yaml
@ -1,28 +0,0 @@
|
||||
- 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!"
|
@ -9,11 +9,6 @@
|
||||
one: "1 min"
|
||||
other: "{{ .Count }} min"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "woord"
|
||||
other: "{{ .Count }} woorden"
|
||||
|
||||
- id: toc
|
||||
translation: "Inhoudsopgave"
|
||||
|
||||
|
33
i18n/no.yaml
33
i18n/no.yaml
@ -1,33 +0,0 @@
|
||||
- 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!"
|
@ -1,19 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "Poprzednia"
|
||||
translation: "Poprzednia strona"
|
||||
|
||||
- id: next_page
|
||||
translation: "Następna"
|
||||
translation: "Następna strona"
|
||||
|
||||
- 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"
|
||||
|
||||
|
17
i18n/pt.yaml
17
i18n/pt.yaml
@ -9,25 +9,8 @@
|
||||
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!"
|
||||
|
33
i18n/ro.yaml
33
i18n/ro.yaml
@ -1,33 +0,0 @@
|
||||
- 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!"
|
18
i18n/ru.yaml
18
i18n/ru.yaml
@ -5,20 +5,7 @@
|
||||
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 }} слово"
|
||||
translation: "{{ .Count }} мин"
|
||||
|
||||
- id: toc
|
||||
translation: "Оглавление"
|
||||
@ -29,9 +16,6 @@
|
||||
- id: home
|
||||
translation: "Главная"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Редактировать"
|
||||
|
||||
- id: code_copy
|
||||
translation: "копировать"
|
||||
|
||||
|
28
i18n/sv.yaml
28
i18n/sv.yaml
@ -1,28 +0,0 @@
|
||||
- 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!"
|
33
i18n/sw.yaml
33
i18n/sw.yaml
@ -1,33 +0,0 @@
|
||||
- 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!"
|
33
i18n/th.yaml
33
i18n/th.yaml
@ -1,33 +0,0 @@
|
||||
- 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: "คัดลอกแล้ว!"
|
12
i18n/tr.yaml
12
i18n/tr.yaml
@ -1,19 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "Önceki"
|
||||
translation: "Önceki Sayfa"
|
||||
|
||||
- id: next_page
|
||||
translation: "Sonraki"
|
||||
translation: "Sonraki Sayfa"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 dk"
|
||||
other: "{{ .Count }} dk"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one : "kelime"
|
||||
other: "{{ .Count }} kelime"
|
||||
|
||||
- id: toc
|
||||
translation: "İçindekiler"
|
||||
|
||||
@ -23,9 +18,6 @@
|
||||
- id: home
|
||||
translation: "Anasayfa"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Düzenle"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Kopyala"
|
||||
|
||||
|
10
i18n/vi.yaml
10
i18n/vi.yaml
@ -6,14 +6,9 @@
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one: "1 phút"
|
||||
one : "1 phút"
|
||||
other: "{{ .Count }} phút"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "từ"
|
||||
other: "{{ .Count }} từ"
|
||||
|
||||
- id: toc
|
||||
translation: "Mục lục"
|
||||
|
||||
@ -23,9 +18,6 @@
|
||||
- id: home
|
||||
translation: "Trang chủ"
|
||||
|
||||
- id: edit_post
|
||||
translation: "Chỉnh sửa"
|
||||
|
||||
- id: code_copy
|
||||
translation: "Sao chép"
|
||||
|
||||
|
@ -1,19 +1,14 @@
|
||||
- id: prev_page
|
||||
translation: "上一頁"
|
||||
translation: "上一篇"
|
||||
|
||||
- id: next_page
|
||||
translation: "下一頁"
|
||||
translation: "下一篇"
|
||||
|
||||
- id: read_time
|
||||
translation:
|
||||
one : "1 分鐘"
|
||||
other: "{{ .Count }} 分鐘"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "字"
|
||||
other: "{{ .Count }} 字"
|
||||
|
||||
- id: toc
|
||||
translation: "目錄"
|
||||
|
||||
@ -23,9 +18,6 @@
|
||||
- id: home
|
||||
translation: "首頁"
|
||||
|
||||
- id: edit_post
|
||||
translation: "編輯"
|
||||
|
||||
- id: code_copy
|
||||
translation: "複製"
|
||||
|
||||
|
@ -9,11 +9,6 @@
|
||||
one : "1 分钟"
|
||||
other: "{{ .Count }} 分钟"
|
||||
|
||||
- id: words
|
||||
translation:
|
||||
one: "字"
|
||||
other: "{{ .Count }} 字"
|
||||
|
||||
- id: toc
|
||||
translation: "目录"
|
||||
|
||||
@ -23,9 +18,6 @@
|
||||
- id: home
|
||||
translation: "主页"
|
||||
|
||||
- id: edit_post
|
||||
translation: "编辑"
|
||||
|
||||
- id: code_copy
|
||||
translation: "复制"
|
||||
|
||||
|
@ -1,25 +1,7 @@
|
||||
{{- 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>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
{{ .Description }}
|
||||
@ -29,7 +11,7 @@
|
||||
|
||||
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
|
||||
{{- if site.Params.ShowAllPagesInArchive }}
|
||||
{{- if .Site.Params.ShowAllPagesInArchive }}
|
||||
{{- $pages = site.RegularPages }}
|
||||
{{- end }}
|
||||
|
||||
@ -46,16 +28,9 @@
|
||||
{{- range .Pages }}
|
||||
{{- if eq .Kind "page" }}
|
||||
<div class="archive-entry">
|
||||
<h3 class="archive-entry-title entry-hint-parent">
|
||||
<h3 class="archive-entry-title">
|
||||
{{- .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 }}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h3>
|
||||
<div class="archive-meta">
|
||||
{{- partial "post_meta.html" . -}}
|
||||
|
@ -1,9 +1,5 @@
|
||||
{{- 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" }}">
|
||||
<html lang="{{ .Site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
|
||||
|
||||
<head>
|
||||
{{- partial "head.html" . }}
|
||||
@ -13,7 +9,7 @@
|
||||
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
|
||||
{{- print "list" -}}
|
||||
{{- end -}}
|
||||
{{- if eq site.Params.defaultTheme `dark` -}}
|
||||
{{- if eq $.Site.Params.defaultTheme `dark` -}}
|
||||
{{- print " dark" }}
|
||||
{{- end -}}
|
||||
" id="top">
|
||||
|
@ -1,5 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range site.RegularPages -}}
|
||||
{{- 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 }}
|
||||
|
@ -1,27 +1,13 @@
|
||||
{{- define "main" }}
|
||||
|
||||
{{- if (and site.Params.profileMode.enabled .IsHome) }}
|
||||
{{- 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>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
{{ .Description | markdownify }}
|
||||
@ -42,12 +28,11 @@
|
||||
|
||||
{{- 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) }}
|
||||
{{- if and .IsHome .Site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
|
||||
{{- partial "home_info.html" . }}
|
||||
{{- end }}
|
||||
|
||||
@ -56,7 +41,7 @@
|
||||
|
||||
{{- $class := "post-entry" }}
|
||||
|
||||
{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }}
|
||||
{{- $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 }}
|
||||
@ -64,25 +49,18 @@
|
||||
{{- end }}
|
||||
|
||||
<article class="{{ $class }}">
|
||||
{{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }}
|
||||
{{- $isHidden := (.Site.Params.cover.hidden | default .Site.Params.cover.hiddenInList) }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">
|
||||
<h2>
|
||||
{{- .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 }}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h2>
|
||||
</header>
|
||||
{{- if (ne (.Param "hideSummary") true) }}
|
||||
<div class="entry-content">
|
||||
<section class="entry-content">
|
||||
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
|
||||
</div>
|
||||
</section>
|
||||
{{- end }}
|
||||
{{- if not (.Param "hideMeta") }}
|
||||
<footer class="entry-footer">
|
||||
@ -97,20 +75,10 @@
|
||||
<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>
|
||||
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">« {{ i18n "prev_page" }}</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>
|
||||
<a class="next" href="{{ $paginator.Next.URL | absURL }}">{{ i18n "next_page" }} »</a>
|
||||
{{- end }}
|
||||
</nav>
|
||||
</footer>
|
||||
|
@ -1,80 +1,50 @@
|
||||
{{- /* 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 }}
|
||||
|
||||
{{- $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 }}
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title>
|
||||
<link rel="alternate" href="{{ (.OutputFormats.Get "HTML").Permalink }}" />
|
||||
<link rel="self" href="{{ (.OutputFormats.Get "RSS").Permalink }}" />
|
||||
<subtitle>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</subtitle>
|
||||
<id>{{ .Permalink }}</id>
|
||||
<generator uri="http://gohugo.io" version="{{ hugo.Version }}">Hugo</generator>
|
||||
<language>{{ site.Language.LanguageCode }}</language>
|
||||
<updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
|
||||
<author>
|
||||
{{ with $authorName }}<name>{{ . }}</name>{{ end }}
|
||||
{{ with $authorEmail }}<name>{{ . }}</name>{{ end }}
|
||||
</author>
|
||||
{{ with site.Copyright }}<rights>{{ . }}</rights>{{ end }}
|
||||
|
||||
{{- range $pages }}
|
||||
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
|
||||
<entry>
|
||||
<title>{{ .Title }}</title>
|
||||
<link rel="alternate" href="{{ .Permalink }}" />
|
||||
<id>{{ .Permalink }}</id>
|
||||
<published>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</published>
|
||||
<updated>{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
|
||||
<summary type="html">{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</summary>
|
||||
{{- if site.Params.ShowFullTextinRSS }}
|
||||
<content type="html">{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content>
|
||||
{{- end }}
|
||||
</entry>
|
||||
<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>
|
||||
<url>{{ index . 0 | absURL }}</url>
|
||||
<link>{{ index . 0 | absURL }}</link>
|
||||
</image>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
</feed>
|
||||
|
||||
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.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>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
|
||||
{{- if .Site.Params.ShowFullTextinRSS }}
|
||||
<content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded>
|
||||
{{- end }}
|
||||
</item>
|
||||
{{- end }}
|
||||
{{ end }}
|
||||
</channel>
|
||||
</rss>
|
||||
|
@ -22,11 +22,8 @@
|
||||
|
||||
<div id="searchbox">
|
||||
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s ↵" .Title) }}"
|
||||
aria-label="search" type="search" autocomplete="off" maxlength="64">
|
||||
aria-label="search" type="search" autocomplete="off">
|
||||
<ul id="searchResults" aria-label="search results"></ul>
|
||||
<noscript>
|
||||
Enable JavaScript to use the search function.
|
||||
</noscript>
|
||||
</div>
|
||||
|
||||
{{- end }}{{/* end main */}}
|
||||
|
@ -3,16 +3,9 @@
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
{{ partial "breadcrumbs.html" . }}
|
||||
<h1 class="post-title entry-hint-parent">
|
||||
<h1 class="post-title">
|
||||
{{ .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 }}
|
||||
{{- if .Draft }}<sup><span class="entry-isdraft"> [draft]</span></sup>{{- end }}
|
||||
</h1>
|
||||
{{- if .Description }}
|
||||
<div class="post-description">
|
||||
@ -26,13 +19,10 @@
|
||||
{{- partial "edit_post.html" . -}}
|
||||
{{- partial "post_canonical.html" . -}}
|
||||
</div>
|
||||
<div class="post-meta">
|
||||
{{- partial "post_lastmod.html" . -}}
|
||||
</div>
|
||||
{{- end }}
|
||||
</header>
|
||||
{{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }}
|
||||
{{- $isHidden := .Params.cover.hidden | default .Site.Params.cover.hiddenInSingle | default .Site.Params.cover.hidden }}
|
||||
{{- partial "cover.html" (dict "cxt" . "IsHome" false "isHidden" $isHidden) }}
|
||||
{{- if (.Param "ShowToc") }}
|
||||
{{- partial "toc.html" . }}
|
||||
{{- end }}
|
||||
@ -46,16 +36,17 @@
|
||||
{{- end }}
|
||||
|
||||
<footer class="post-footer">
|
||||
{{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
|
||||
{{- if .Params.tags }}
|
||||
<ul class="post-tags">
|
||||
{{- range ($.GetTerms $tags) }}
|
||||
{{- range ($.GetTerms "tags") }}
|
||||
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
{{- if (.Param "ShowPostNavLinks") }}
|
||||
{{- partial "post_nav_links.html" . }}
|
||||
{{- end }}
|
||||
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
|
||||
{{- if (and .Site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
|
||||
{{- partial "share_icons.html" . -}}
|
||||
{{- end }}
|
||||
</footer>
|
||||
|
@ -16,7 +16,7 @@
|
||||
{{- range $key, $value := .Data.Terms.Alphabetical }}
|
||||
{{- $name := .Name }}
|
||||
{{- $count := .Count }}
|
||||
{{- with site.GetPage (printf "/%s/%s" $type $name) }}
|
||||
{{- with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a>
|
||||
</li>
|
||||
|
@ -1,5 +1,5 @@
|
||||
{{- if or .Params.author site.Params.author }}
|
||||
{{- $author := (.Params.author | default site.Params.author) }}
|
||||
{{- 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 ", " ) }}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{{- if (.Param "ShowBreadCrumbs") -}}
|
||||
<div class="breadcrumbs">
|
||||
{{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" }}
|
||||
{{- $url := replace .Parent.Permalink (printf "%s" .Site.BaseURL) "" }}
|
||||
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
|
||||
|
||||
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>
|
||||
@ -8,7 +8,7 @@
|
||||
{{- range $index, $element := split $lang_url "/" }}
|
||||
|
||||
{{- $scratch.Add "path" (printf "%s/" $element )}}
|
||||
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
|
||||
{{- $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>
|
||||
|
@ -1,24 +1,21 @@
|
||||
{{- 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)}}
|
||||
{{- $responsiveImages := (.Params.cover.responsiveImages | default .Site.Params.cover.responsiveImages) | default true }}
|
||||
{{- $addLink := (and .Site.Params.cover.linkFullImages (not $.IsHome)) }}
|
||||
{{- $cover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||
{{- if $cover -}}{{/* i.e it is present in page bundle */}}
|
||||
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}"
|
||||
{{- 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")) }}
|
||||
{{- $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 -}}
|
||||
<img loading="lazy" srcset="{{- range $size := $sizes -}}
|
||||
{{- if (ge $cover.Width $size) -}}
|
||||
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
|
||||
{{ end }}
|
||||
@ -26,16 +23,16 @@
|
||||
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 }}">
|
||||
<img loading="lazy" 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 }}"
|
||||
{{- if $addLink }}<a href="{{ (.Params.cover.image) | absURL }}" target="_blank"
|
||||
rel="noopener noreferrer">{{ end -}}
|
||||
<img loading="{{$loading}}" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
||||
<img loading="lazy" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
||||
{{- end }}
|
||||
{{- if $addLink }}</a>{{ end -}}
|
||||
{{/* Display Caption */}}
|
||||
{{- if $.IsSingle }}
|
||||
{{- if not $.IsHome }}
|
||||
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }}
|
||||
{{- end }}
|
||||
</figure>
|
||||
|
@ -1,8 +1,8 @@
|
||||
{{- if and (or .Params.editPost.URL site.Params.editPost.URL) (not (.Param "editPost.disabled")) -}}
|
||||
{{- if or .Params.editPost.URL .Site.Params.editPost.URL -}}
|
||||
{{- $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">
|
||||
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
|
||||
{{- 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 }}
|
||||
|
@ -1,19 +1,19 @@
|
||||
{{- if not (.Param "hideFooter") }}
|
||||
<footer class="footer">
|
||||
{{- if site.Copyright }}
|
||||
<span>{{ site.Copyright | markdownify }}</span>
|
||||
{{- if .Site.Copyright }}
|
||||
<span>{{ .Site.Copyright | markdownify }}</span>
|
||||
{{- else }}
|
||||
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
|
||||
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></span>
|
||||
{{- end }}
|
||||
<span>
|
||||
- Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer">Hugo</a> &
|
||||
<a href="https://github.com/Wonderfall/hugo-WonderMod/" rel="noopener">WonderMod</a>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://git.io/hugopapermod" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
{{- end }}
|
||||
|
||||
{{- if (not site.Params.disableScrollToTop) }}
|
||||
{{- 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" />
|
||||
@ -23,4 +23,113 @@
|
||||
|
||||
{{- partial "extend_footer.html" . }}
|
||||
|
||||
{{- partial "script.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.innerText = '{{- i18n "code_copy" | default "copy" }}';
|
||||
|
||||
function copyingDone() {
|
||||
copybutton.innerText = '{{- i18n "code_copied" | default "copied!" }}';
|
||||
setTimeout(() => {
|
||||
copybutton.innerText = '{{- 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 }}
|
||||
|
@ -1,108 +1,164 @@
|
||||
<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) }}
|
||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
||||
<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>
|
||||
<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 }}
|
||||
{{ 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 -}}">
|
||||
{{- 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 -}}">
|
||||
{{- .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 }}">
|
||||
<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 }}">
|
||||
{{- 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 }}">
|
||||
{{- if .Site.Params.analytics.bing.SiteVerificationTag }}
|
||||
<meta name="msvalidate.01" content="{{ .Site.Params.analytics.bing.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" }}
|
||||
{{- $commonHighlight := (resources.Get "css/common/chroma.css") }}
|
||||
|
||||
{{- /* include `an-old-hope` if hljs is on */}}
|
||||
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default false) }}
|
||||
{{- $hljs := (cond ($isHLJSdisabled) (" " | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
|
||||
|
||||
{{- /* order is important */}}
|
||||
{{- $core := (slice $theme_vars $reset $common $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 }}
|
||||
{{- $core := (slice $theme_vars $reset $common $hljs $media) | resources.Concat "assets/css/core.css" }}
|
||||
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }}
|
||||
|
||||
{{- /* bundle all required css */}}
|
||||
{{- /* Add extended css after theme style */ -}}
|
||||
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
|
||||
{{- $stylesheet := (slice $core $extended) | resources.Concat "assets/css/stylesheet.css" | minify }}
|
||||
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- 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 }}
|
||||
|
||||
{{- /* noscript */}}
|
||||
<noscript>
|
||||
{{- $noscript := (resources.Get "css/includes/noscript.css") }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $noscript := $noscript | fingerprint }}
|
||||
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" integrity="{{ $noscript.Data.Integrity }}" rel="preload stylesheet" as="style">
|
||||
{{- else }}
|
||||
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" rel="preload stylesheet" as="style">
|
||||
{{- end }}
|
||||
</noscript>
|
||||
{{- with .Site.Params.profileMode }}
|
||||
{{- if and .enabled .imageUrl $.IsHome }}
|
||||
<link rel="preload" href="{{ .imageUrl }}" as="image">
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Site.Params.label.icon }}
|
||||
<link rel="preload" href="{{ . }}" as="image">
|
||||
{{- 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)) }}
|
||||
{{- $fusejs := resources.Get "js/fuse.js" }}
|
||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }}
|
||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
|
||||
{{- else }}
|
||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }}
|
||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Highlight.js */}}
|
||||
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
|
||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
|
||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }}
|
||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
|
||||
onload="hljs.initHighlightingOnLoad();"></script>
|
||||
{{- else }}
|
||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }}
|
||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></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" }}">
|
||||
<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" }}">
|
||||
|
||||
{{- /* Generator */}}
|
||||
{{ hugo.Generator }}
|
||||
|
||||
{{- /* RSS */}}
|
||||
{{ range .AlternativeOutputFormats -}}
|
||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
|
||||
{{ end -}}
|
||||
{{- range .AllTranslations -}}
|
||||
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
|
||||
<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);
|
||||
--hljs-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") }}
|
||||
{{- 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" . }}
|
||||
|
@ -1,60 +1,66 @@
|
||||
{{- /* theme.js */}}
|
||||
{{- if not site.Params.disableThemeToggle }}
|
||||
{{- $theme := resources.Get "js/theme.js" | resources.Minify }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" | fingerprint }}
|
||||
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}" integrity="{{ $theme_js.Data.Integrity }}"></script>
|
||||
{{- /* 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_js := (slice $theme) | resources.Concat "assets/js/theme.js" }}
|
||||
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}"></script>
|
||||
{{- /* 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">
|
||||
{{- if ( and (.IsPage) (ne .Layout "archives") (ne .Layout "search")) }}
|
||||
<div id="progressBar"></div>
|
||||
{{- end }}
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
{{- $label_text := (site.Params.label.text | default site.Title) }}
|
||||
{{- if site.Title }}
|
||||
{{- $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 }}
|
||||
{{- if .Site.Params.label.icon }}
|
||||
<img src="{{- .Site.Params.label.icon | absURL -}}" alt="logo" aria-label="logo"
|
||||
height="{{- .Site.Params.label.iconHeight | default " 30px" -}}">
|
||||
{{- end -}}
|
||||
{{- $label_text -}}
|
||||
</a>
|
||||
{{- end }}
|
||||
<div class="logo-switches">
|
||||
{{- if (not site.Params.disableThemeToggle) }}
|
||||
<button type="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"
|
||||
<span 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="24" 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"
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" 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>
|
||||
@ -71,8 +77,8 @@
|
||||
{{- end }}
|
||||
|
||||
{{- $lang := .Lang}}
|
||||
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
|
||||
{{- with site.Home.AllTranslations }}
|
||||
{{- $separator := or $label_text (not .Site.Params.disableThemeToggle)}}
|
||||
{{- with $.Site.Home.AllTranslations }}
|
||||
<ul class="lang-switch">
|
||||
{{- if $separator }}<li>|</li>{{ end }}
|
||||
{{- range . -}}
|
||||
@ -80,7 +86,7 @@
|
||||
<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)) }}
|
||||
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- .Language.LanguageName | emojify -}}
|
||||
{{- else }}
|
||||
{{- .Lang | title -}}
|
||||
@ -91,17 +97,14 @@
|
||||
{{- end}}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
{{- $currentPage := . }}
|
||||
<input name="hamburger-input" id="hamburger-input" type="checkbox" aria-label="Navigation Menu">
|
||||
<label id="hamburger-menu" for="hamburger-input"></label>
|
||||
<div class="overlay"></div>
|
||||
<ul id="menu">
|
||||
{{- range site.Menus.main }}
|
||||
{{- 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` }}
|
||||
{{- $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 ) }}>
|
||||
@ -110,14 +113,6 @@
|
||||
{{- .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 }}
|
||||
|
@ -1,13 +1,13 @@
|
||||
{{- with site.Params.homeInfoParams }}
|
||||
{{- 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>
|
||||
<section class="entry-content">
|
||||
<p>{{ .Content | markdownify }}</p>
|
||||
</section>
|
||||
<footer class="entry-footer">
|
||||
{{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }}
|
||||
{{ partial "social_icons.html" $.Site.Params.socialIcons }}
|
||||
</footer>
|
||||
</article>
|
||||
{{- end -}}
|
||||
|
@ -1,54 +1,19 @@
|
||||
<div class="profile">
|
||||
{{- with site.Params.profileMode }}
|
||||
{{- 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 }}"
|
||||
<img src="{{ .imageUrl | absURL }}" alt="{{ .imageTitle | default "profile image" }}"
|
||||
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<h1>{{ .title | default site.Title | markdownify }}</h1>
|
||||
<h1>{{ .title | default $.Site.Title | markdownify }}</h1>
|
||||
<span>{{ .subtitle | markdownify }}</span>
|
||||
{{- partial "social_icons.html" -}}
|
||||
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
|
||||
|
||||
{{- 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 class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name | title }}">
|
||||
<span class="button-inner">{{ .name | title }}</span>
|
||||
</a>
|
||||
{{- end }}
|
||||
</div>
|
||||
|
@ -1,9 +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 -}}
|
||||
{{- 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 " " }}" rel="noopener noreferrer">{{ $url.Host }}</a>
|
||||
{{- (.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 }}
|
||||
|
@ -1,6 +0,0 @@
|
||||
{{ $date := .Date.Format "02.01.2006" }}
|
||||
{{ $lastmod := .Lastmod.Format "02.01.2006" }}
|
||||
|
||||
{{- if ne $lastmod $date -}}
|
||||
<span title={{ .Lastmod }}><i>Last updated on {{ .Lastmod | time.Format (default "January 2, 2006" site.Params.DateFormat) }}</i></span>
|
||||
{{- end }}
|
@ -1,23 +1,17 @@
|
||||
{{- $scratch := newScratch }}
|
||||
|
||||
{{- if not .Date.IsZero -}}
|
||||
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default "January 2, 2006" site.Params.DateFormat)))) }}
|
||||
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default "January 2, 2006" .Site.Params.DateFormat)))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if (.Param "ShowReadingTime") -}}
|
||||
{{- $scratch.Add "meta" (slice (i18n "read_time" .ReadingTime | default (printf "%d min" .ReadingTime))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if (.Param "ShowWordCount") -}}
|
||||
{{- $scratch.Add "meta" (slice (i18n "words" .WordCount | default (printf "%d words" .WordCount))) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if not (.Param "hideAuthor") -}}
|
||||
{{- with (partial "author.html" .) }}
|
||||
{{- $scratch.Add "meta" (slice .) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with ($scratch.Get "meta") }}
|
||||
{{- delimit . " · " | safeHTML -}}
|
||||
{{- delimit . " · " -}}
|
||||
{{- end -}}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{{- $pages := .CurrentSection.RegularPages.ByTitle }}
|
||||
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
{{- if and (gt (len $pages) 1) (in $pages . ) }}
|
||||
<nav class="paginav">
|
||||
{{- with $pages.Next . }}
|
||||
|
@ -1,27 +0,0 @@
|
||||
{{- /* 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 -}}
|
||||
|
||||
{{- /* PaperMod.js */}}
|
||||
{{- $scrollToTop := (not site.Params.disableScrollToTop | default .Params.disableScrollToTop ) }}
|
||||
{{- $themeToggle := (not site.Params.disableThemeToggle | default .Params.disableThemeToggle ) }}
|
||||
{{- $showCodeCopyButtons := (site.Params.ShowCodeCopyButtons | default .Params.ShowCodeCopyButtons ) }}
|
||||
{{- $papermod := resources.Get "js/papermod.js" | js.Build (dict "params" (dict "scrollToTop" $scrollToTop "themeToggle" $themeToggle "showCodeCopyButtons" $showCodeCopyButtons)) | resources.Minify }}
|
||||
{{- if not site.Params.assets.disableFingerprinting }}
|
||||
{{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" | fingerprint }}
|
||||
<script defer crossorigin="anonymous" src="{{ $papermod_js.RelPermalink }}" integrity="{{ $papermod_js.Data.Integrity }}"></script>
|
||||
{{- else }}
|
||||
{{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" }}
|
||||
<script defer crossorigin="anonymous" type="module" src="{{ $papermod_js.RelPermalink }}"></script>
|
||||
{{- end }}
|
@ -13,83 +13,59 @@
|
||||
{{- $ShareButtons := (.Param "ShareButtons")}}
|
||||
{{- with $ShareButtons }}{{ $custom = true }}{{ end }}
|
||||
|
||||
<ul class="share-buttons">
|
||||
{{- if (or (cond ($custom) (in $ShareButtons "x") (true)) (cond ($custom) (in $ShareButtons "twitter") (true))) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on x"
|
||||
href="https://x.com/intent/tweet/?text={{ $title }}&url={{ $pageurl }}&hashtags={{- $.Scratch.Get "tags" -}}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<div class="share-buttons">
|
||||
{{- if (cond ($custom) (in $ShareButtons "twitter") (true)) }}
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text={{ $title }}&url={{ $pageurl }}&hashtags={{- $.Scratch.Get "tags" -}}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "linkedin") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url={{ $pageurl }}&title={{ $title }}&summary={{ $title }}&source={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url={{ $pageurl }}&title={{ $title }}&summary={{ $title }}&source={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "reddit") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
|
||||
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
|
||||
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "facebook") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "whatsapp") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "telegram") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
|
||||
href="https://telegram.me/share/url?text={{ $title }}&url={{ $pageurl }}">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
|
||||
href="https://telegram.me/share/url?text={{ $title }}&url={{ $pageurl }}">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
{{- end }}
|
||||
{{- if (cond ($custom) (in $ShareButtons "ycombinator") (true)) }}
|
||||
<li>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t={{ $title }}&u={{ $pageurl }}">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
</li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<div class="social-icons" {{ with .align}}align="{{.}}" {{- end }}>
|
||||
{{- range site.Params.socialIcons }}
|
||||
<a href="{{ trim .url " " | safeURL }}" rel="noopener noreferrer me"
|
||||
title="{{ (.title | default .name) | title }}">
|
||||
<div class="social-icons">
|
||||
{{- range . }}
|
||||
<a href="{{ trim .url " " }}" target="_blank" rel="noopener noreferrer me" title="{{ .name | title }}">
|
||||
{{ partial "svg.html" . }}
|
||||
</a>
|
||||
{{- end }}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
|
||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
{{- if .Params.cover.image -}}
|
||||
@ -19,7 +19,7 @@
|
||||
{{- with $featured -}}
|
||||
<meta property="og:image" content="{{ $featured.Permalink }}"/>
|
||||
{{- else -}}
|
||||
{{- with site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
|
||||
{{- with $.Site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
@ -27,41 +27,26 @@
|
||||
{{- if .IsPage }}
|
||||
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||
<meta property="article:section" content="{{ .Section }}" />
|
||||
{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
|
||||
{{ with .Lastmod }}<meta property="article:modified_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
|
||||
{{ with .PublishDate }}<meta property="article:published_time" content="{{ .Format $iso8601 }}" />{{ end }}
|
||||
{{ with .Lastmod }}<meta property="article:modified_time" content="{{ .Format $iso8601 }}" />{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
|
||||
{{- with site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
{{- with .Params.videos }}{{- range . }}
|
||||
<meta property="og:video" content="{{ . | absURL }}" />
|
||||
{{ end }}{{ end }}
|
||||
|
||||
{{- /* If it is part of a series, link to related articles */}}
|
||||
{{- $permalink := .Permalink }}
|
||||
{{- $siteSeries := site.Taxonomies.series }}
|
||||
{{- if $siteSeries }}
|
||||
{{- $siteSeries := .Site.Taxonomies.series }}
|
||||
{{ with .Params.series }}{{- range $name := . }}
|
||||
{{- $series := index $siteSeries ($name | urlize) }}
|
||||
{{- range $page := first 6 $series.Pages }}
|
||||
{{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }}
|
||||
{{- end }}
|
||||
{{ end }}{{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Deprecate site.Social.facebook_admin in favor of site.Params.social.facebook_admin */}}
|
||||
{{- $facebookAdmin := "" }}
|
||||
{{- with site.Params.social }}
|
||||
{{- if reflect.IsMap . }}
|
||||
{{- $facebookAdmin = .facebook_admin }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- with site.Social.facebook_admin }}
|
||||
{{- $facebookAdmin = . }}
|
||||
{{- warnf "The social key in site configuration is deprecated. Use params.social.facebook_admin instead." }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||
{{ with $facebookAdmin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
|
@ -2,23 +2,23 @@
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ site.Title }},
|
||||
"url": {{ site.BaseURL }},
|
||||
"description": {{ site.Params.description | plainify | truncate 180 | safeHTML }},
|
||||
"thumbnailUrl": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }},
|
||||
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ .Site.Title }},
|
||||
"url": {{ .Site.BaseURL }},
|
||||
"description": {{ .Site.Params.description | plainify | truncate 180 | safeHTML }},
|
||||
"thumbnailUrl": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }},
|
||||
"sameAs": [
|
||||
{{- if site.Params.schema.sameAs }}
|
||||
{{ range $i, $e := site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
|
||||
{{- if .Site.Params.schema.sameAs }}
|
||||
{{ range $i, $e := .Site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
|
||||
{{- else}}
|
||||
{{ range $i, $e := site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " | safeURL }}{{ end }}
|
||||
{{ range $i, $e := .Site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " }}{{ end }}
|
||||
{{- end}}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
{{- else if (or .IsPage .IsSection) }}
|
||||
{{/* BreadcrumbList */}}
|
||||
{{- $url := replace .Parent.Permalink ( printf "%s" site.BaseURL) "" }}
|
||||
{{- $url := replace .Parent.Permalink ( printf "%s" .Site.BaseURL) "" }}
|
||||
{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }}
|
||||
{{- $bc_list := (split $lang_url "/")}}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
{{- range $index, $element := $bc_list }}
|
||||
|
||||
{{- $scratch.Add "path" (printf "%s/" $element ) | safeJS }}
|
||||
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
|
||||
{{- $bc_pg := $.Site.GetPage ($scratch.Get "path") -}}
|
||||
|
||||
{{- if (and ($bc_pg) (gt (len . ) 0))}}
|
||||
{{- if (and $index)}}, {{end }}
|
||||
@ -83,7 +83,7 @@
|
||||
{{- end -}}
|
||||
"datePublished": {{ .PublishDate }},
|
||||
"dateModified": {{ .Lastmod }},
|
||||
{{- with (.Params.author | default site.Params.author) }}
|
||||
{{- with (.Params.author | default .Site.Params.author) }}
|
||||
"author":
|
||||
{{- if (or (eq (printf "%T" .) "[]string") (eq (printf "%T" .) "[]interface {}")) -}}
|
||||
[{{- range $i, $v := . -}}
|
||||
@ -105,11 +105,11 @@
|
||||
"@id": {{ .Permalink | safeHTML }}
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ site.Title }},
|
||||
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
|
||||
"name": {{ .Site.Title }},
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }}
|
||||
"url": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ $featured.Permalink }}"/>
|
||||
{{- else -}}
|
||||
{{- with site.Params.images -}}
|
||||
{{- with $.Site.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{ else -}}
|
||||
@ -27,24 +27,7 @@
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<meta name="twitter:title" content="{{ .Title }}"/>
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||
{{- /* Deprecate site.Social.twitter in favor of site.Params.social.twitter */}}
|
||||
{{- $twitterSite := "" }}
|
||||
{{- with site.Params.social }}
|
||||
{{- if reflect.IsMap . }}
|
||||
{{- $twitterSite = .twitter }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- with site.Social.twitter }}
|
||||
{{- $twitterSite = . }}
|
||||
{{- warnf "The social key in site configuration is deprecated. Use params.social.twitter instead." }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with $twitterSite }}
|
||||
{{- $content := . }}
|
||||
{{- if not (strings.HasPrefix . "@") }}
|
||||
{{- $content = printf "@%v" $twitterSite }}
|
||||
{{- end }}
|
||||
<meta name="twitter:site" content="{{ $content }}"/>
|
||||
{{- end }}
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||
{{ with .Site.Social.twitter -}}
|
||||
<meta name="twitter:site" content="@{{ . }}"/>
|
||||
{{ end -}}
|
||||
|
@ -1,16 +1,13 @@
|
||||
{{- $headers := findRE "<h[1-6].*?>(.|\n])+?</h[1-6]>" .Content -}}
|
||||
{{- $has_headers := ge (len $headers) 1 -}}
|
||||
{{- if $has_headers -}}
|
||||
<div class="toc side">
|
||||
<details id="toc" {{if (.Param "TocOpen") }} open{{ end }}>
|
||||
<div class="toc">
|
||||
<details {{if (.Param "TocOpen") }} open{{ end }}>
|
||||
<summary accesskey="c" title="(Alt + C)">
|
||||
<span class="details">{{- i18n "toc" | default "Table of Contents" }}</span>
|
||||
</summary>
|
||||
|
||||
<div class="inner">
|
||||
{{- if (.Param "UseHugoToc") }}
|
||||
{{- .TableOfContents -}}
|
||||
{{- else }}
|
||||
{{- $largest := 6 -}}
|
||||
{{- range $headers -}}
|
||||
{{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}}
|
||||
@ -71,10 +68,10 @@
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
<li>
|
||||
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify | safeHTML -}}">{{- $header | plainify | safeHTML -}}</a>
|
||||
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify -}}">{{- $header | safeHTML -}}</a>
|
||||
{{- else }}
|
||||
<li>
|
||||
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify | safeHTML -}}">{{- $header | plainify | safeHTML -}}</a>
|
||||
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify -}}">{{- $header | safeHTML -}}</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
<!-- {{- $firstHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers 0) 1) 0)) -}} -->
|
||||
@ -90,7 +87,6 @@
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
@ -1,13 +1,13 @@
|
||||
{{- if .IsTranslated -}}
|
||||
{{- if (ne .Layout "search") }}
|
||||
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }} | {{- end -}}
|
||||
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }} | {{- end -}}
|
||||
{{- end }}
|
||||
{{- i18n "translations" | default "Translations" }}:
|
||||
<ul class="i18n_list">
|
||||
{{- i18n "translations" | default "Translations" }}:
|
||||
{{- range .Translations }}
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">
|
||||
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||
{{- .Language.LanguageName | emojify -}}
|
||||
{{- else }}
|
||||
{{- .Lang | title -}}
|
||||
|
@ -1,5 +1,5 @@
|
||||
User-agent: *
|
||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
|
||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
||||
Disallow:
|
||||
{{- else }}
|
||||
Disallow: /
|
||||
|
72
layouts/shortcodes/blockquote.html
Normal file
72
layouts/shortcodes/blockquote.html
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes -->
|
||||
<!-- port of Octopress blockquote plugin http://octopress.org/docs/plugins/blockquote/ to Hugo
|
||||
see readme for usage -->
|
||||
|
||||
<!-- reset scratch variables at the start -->
|
||||
{{ $.Scratch.Set "bl_author" false }}
|
||||
{{ $.Scratch.Set "bl_source" false }}
|
||||
{{ $.Scratch.Set "bl_link" false }}
|
||||
{{ $.Scratch.Set "bl_title" false }}
|
||||
|
||||
{{ if .IsNamedParams }}
|
||||
{{ $.Scratch.Set "bl_author" (.Get "author") }}
|
||||
{{ $.Scratch.Set "bl_source" (.Get "source") }}
|
||||
{{ $.Scratch.Set "bl_link" (.Get "link") }}
|
||||
{{ $.Scratch.Set "bl_title" (.Get "title") }}
|
||||
{{ else }}
|
||||
<!-- for the positional version if any -->
|
||||
{{ end }}
|
||||
|
||||
<!-- if title is not set explicitly then we need to beautify the link
|
||||
if length of link is more than 32 chars, we will cut it off by 32 and
|
||||
then drop everything after the last / if any and put it in into title -->
|
||||
|
||||
{{ with $.Scratch.Get "bl_title" }}
|
||||
<!-- do nothing -->
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_link" }} <!-- if link is given -->
|
||||
{{ range last 1 (split ($.Scratch.Get "bl_link" ) "://") }} <!-- split by :// and then only take the items after it to remove protocol:// -->
|
||||
{{ $.Scratch.Set "title_without_protocol" . }}
|
||||
{{ end }}
|
||||
{{ range last 1 (split ($.Scratch.Get "title_without_protocol" ) "www.") }} <!-- also remove the www. at the start if any. we are using a second split because all URLS may not start with it -->
|
||||
{{ $.Scratch.Set "title_without_protocol" . }}
|
||||
{{ end }}
|
||||
{{ $.Scratch.Set "bl_title" ($.Scratch.Get "title_without_protocol") }}
|
||||
|
||||
<!-- if link is longer than 32 bytes we should trim it -->
|
||||
{{ if (gt (len ($.Scratch.Get "title_without_protocol") ) 32) }}
|
||||
{{ $title := (slicestr ($.Scratch.Get "title_without_protocol") 0 32) }} <!-- get the first 32 characters of title_without_protocol -->
|
||||
{{ $split_by_fw_slash := split $title "/" }} <!-- now split on / because we want to stop after the last forward slash -->
|
||||
{{ $count := (sub (len $split_by_fw_slash) 1) }} <!-- we want everything but the last part so we adjust the count accordingly -->
|
||||
|
||||
{{ $.Scratch.Set "tempstring" "" }} <!-- temp variable to hold the concatinated string -->
|
||||
{{ range first $count $split_by_fw_slash }} <!-- loop through all parts except last and concat them (add / between halves) -->
|
||||
{{ $.Scratch.Set "tempstring" ( . | printf "%s%s/" ($.Scratch.Get "tempstring") | printf "%s" ) }}
|
||||
{{ end }}
|
||||
{{ $.Scratch.Set "bl_title" ( printf "%s..." ($.Scratch.Get "tempstring") | printf "%s" ) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<blockquote>
|
||||
<p>{{ .Inner | markdownify }}</p>
|
||||
<footer>
|
||||
<strong>{{ with $.Scratch.Get "bl_author" }}{{ . }}{{ end }}</strong>
|
||||
{{ with $.Scratch.Get "bl_source" }}
|
||||
<cite>{{ . }}</cite>
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_link" }}
|
||||
<cite>
|
||||
<a href="{{ . }}" title="{{ . }}">{{ $.Scratch.Get "bl_title" }}</a> <!-- can't have new lines here -->
|
||||
</cite>
|
||||
{{ else }}
|
||||
{{ with $.Scratch.Get "bl_title" }}
|
||||
<cite>
|
||||
{{ $.Scratch.Get "bl_title" }}</a>
|
||||
</cite>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</footer>
|
||||
</blockquote>
|
@ -1,5 +0,0 @@
|
||||
{{- $Img := (.Get "url") }}
|
||||
{{- $height := (.Get "height") }}
|
||||
{{- $alt := (.Get "alt") }}
|
||||
|
||||
<img class="in-text" height="{{ $height | default `15` }}" src="{{$Img}}" alt="{{$alt}}">
|
@ -1,2 +1,2 @@
|
||||
<!-- raw html -->
|
||||
{{- .Inner -}}
|
||||
{{.Inner}}
|
@ -1,4 +0,0 @@
|
||||
{{- $id := .Get "id" | default (.Get 0) -}}
|
||||
<div class="youtube-embed-div">
|
||||
<iframe src="https://www.youtube-nocookie.com/embed/{{ $id }}" class="youtube-embed-frame" allowfullscreen title="YouTube Video"></iframe>
|
||||
</div>
|
20
theme.toml
20
theme.toml
@ -1,11 +1,11 @@
|
||||
# theme.toml template for a Hugo theme
|
||||
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
||||
|
||||
name = "WonderMod"
|
||||
name = "PaperMod"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/Wonderfall/hugo-WonderMod/blob/master/LICENSE"
|
||||
licenselink = "https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE"
|
||||
description = "A fast, clean, responsive Hugo theme"
|
||||
homepage = "https://github.com/Wonderfall/hugo-WonderMod"
|
||||
homepage = "https://adityatelange.github.io/hugo-PaperMod/"
|
||||
tags = [
|
||||
"responsive",
|
||||
"simple",
|
||||
@ -37,15 +37,15 @@ features = [
|
||||
"scroll-to-top",
|
||||
"search"
|
||||
]
|
||||
min_version = "0.112.4"
|
||||
min_version = "0.83.0"
|
||||
|
||||
[author]
|
||||
name = "Wonderfall"
|
||||
homepage = "https://github.com/Wonderfall"
|
||||
name = "Aditya Telange"
|
||||
homepage = "https://github.com/adityatelange/"
|
||||
|
||||
# If porting an existing theme
|
||||
[original]
|
||||
name = "PaperMod"
|
||||
author = "Aditya Telange"
|
||||
homepage = "https://github.com/adityatelange"
|
||||
repo = "https://github.com/adityatelange/hugo-PaperMod"
|
||||
name = "Paper"
|
||||
author = "nanxiaobei"
|
||||
homepage = "https://github.com/nanxiaobei"
|
||||
repo = "https://github.com/nanxiaobei/hugo-paper/"
|
||||
|
Loading…
x
Reference in New Issue
Block a user