Compare commits

..

No commits in common. "master" and "v3.9.2" have entirely different histories.

101 changed files with 1283 additions and 2143 deletions

45
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,45 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!--
Before creating this bug report, make sure you have read the theme documentation: https://docs.stack.jimmycai.com/
-->
## Describe the bug
A clear and concise description of what the bug is.
## Expected behavior
A clear and concise description of what you expected to happen.
## To Reproduce
Indicate the steps to reproduce this bug, if applicable.
## Screenshots
Add screenshots to help explain your problem.
## Environment
- **Hugo version** [e.g: 0.80.0]:
- **Hugo extended?**: Yes / No
## Additional context
Add any other context about the problem here.
If it's a UI issue, fill the following information:
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
## Content of config.yaml
```yaml
### Paste the content of the config file here
```
## Link to the demo site and/or source repository

View File

@ -1,65 +0,0 @@
name: Bug Report
description: File a bug report
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please provide as much information as possible and make sure you have checked the [documentation](https://stack.jimmycai.com/guide/).
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen? Please be as detailed as possible, including screenshots and any other information that might help us reproduce the problem.
placeholder: Tell us what you see!
validations:
required: true
- type: input
id: hugo-version
attributes:
label: Hugo version
description: "What is the version of Hugo you are using? (Note: this theme does not support non-extended version of Hugo)"
placeholder: ex. 0.100.0
validations:
required: true
- type: input
id: theme-version
attributes:
label: Theme version
description: "What is the version of Stack theme you are using?"
placeholder: ex. 3.12.0
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- type: input
id: browser-info
attributes:
label: More information about the browser
description: "E.g: Browser version, OS version, etc."
placeholder: ex. Chrome 104, Windows 11
validations:
required: false
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: input
id: minimal-reproduction-url
attributes:
label: Link to Minimal Reproducible Example
description: |
Use [CaiJimmy/hugo-theme-stack-starter](https://github.com/CaiJimmy/hugo-theme-stack-starter) to create a minimal reproduction of the problem.
A minimal reproduction is required so that others can help debug your issue. If a report is vague (e.g. just a generic error message) and has no reproduction, it may be auto-closed.
placeholder: https://github.com/username/your-repository
validations:
required: true

View File

@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Discussions
url: https://github.com/CaiJimmy/hugo-theme-stack/discussions
about: Please ask and answer questions here.

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

33
.github/release-drafter.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name-template: "v$RESOLVED_VERSION 🌈"
tag-template: "v$RESOLVED_VERSION"
categories:
- title: "🚀 Features"
labels:
- "feature"
- "enhancement"
- title: "🐛 Bug Fixes"
labels:
- "fix"
- "bugfix"
- "bug"
- title: "🧰 Maintenance"
label: "chore"
- title: "♻️ Refactor"
label: refactor
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
version-resolver:
major:
labels:
- "major"
minor:
labels:
- "minor"
patch:
labels:
- "patch"
default: patch
template: |
## Changes
$CHANGES

44
.github/workflows/hugo-artifact.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: Build Hugo Artifact
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [master]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Hugo setup
uses: peaceiris/actions-hugo@v2.4.13
with:
# The Hugo version to download (if necessary) and use. Example: 0.58.2
hugo-version: latest # optional, default is latest
# Download (if necessary) and use Hugo extended version. Example: true
extended: true # optional, default is false
# Runs a set of commands using the runners shell
- name: Generate Hugo site
run: cd exampleSite && hugo --gc --themesDir ../..
- name: Upload Hugo artifact
uses: actions/upload-artifact@v2.2.2
with:
# Artifact name
name: resources
# A file, directory or wildcard pattern that describes what to upload
path: |
exampleSite/resources
!exampleSite/resources/_gen/images

16
.github/workflows/release-drafter.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Release Drafter
on:
push:
# branches to consider in the event; optional, defaults to all
branches:
- master
jobs:
update_release_draft:
runs-on: ubuntu-latest
steps:
# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,23 +1,48 @@
![image](https://user-images.githubusercontent.com/5889006/190859441-141b5f81-8483-40d2-bd96-ebf85616a46d.png) ![Stack](https://i.imgur.com/cCiHOGS.jpg)
# Hugo Theme Stack # Hugo Theme Stack
<img align="right" width="150" alt="logo" src="https://user-images.githubusercontent.com/5889006/190859553-5b229b4f-c476-4cbd-928f-890f5265ca4c.png"> > Card-style Hugo theme designed for bloggers.
Card-style Hugo theme designed for bloggers.
## Quickstart
Use this template: [CaiJimmy/hugo-theme-stack-starter](https://github.com/CaiJimmy/hugo-theme-stack-starter)
## Demo ## Demo
* Starter template demo: [demo.stack.jimmycai.com](https://demo.stack.jimmycai.com) [Example Site](https://demo.stack.jimmycai.com/)
* Dev build: [dev.stack.jimmycai.com](https://dev.stack.jimmycai.com)
[![Netlify Status](https://api.netlify.com/api/v1/badges/a2d2807a-a905-4bcb-97da-8da8d847da3d/deploy-status)](https://app.netlify.com/sites/hugo-theme-stack/deploys)
## Documentation ## Documentation
Visit [stack.jimmycai.com](https://stack.jimmycai.com) [Documentation](https://docs.stack.jimmycai.com/) | [中文文档](https://docs.stack.jimmycai.com/zh/)
## Introduction
Stack is a simple card-style Hugo theme designed for bloggers, some of its features are:
- Responsive images support
- Lazy load images
- Dark mode
- Local search
- [PhotoSwipe](https://photoswipe.com/) integration
- Archive page template
- Full native JavaScript, no jQuery or any other frameworks are used
- No CSS framework, keep it simple and minimal
- Properly cropped thumbnails
- Subsection support
- Table of contents
## Requirements
It's necessary to use **Hugo Extended ≥ 0.87.0**.
## Installation
* Route 1: Clone / Download this repository to `theme` folder
* Route 2: Turn your site into a hugo module and add this theme as a module dependency
Edit your site config following `exampleSite/config.yaml`.
*Note: Remove `config.toml` if there is one in the site folder.*
Check [documentation](https://docs.stack.jimmycai.com/) for more details.
## Copyright ## Copyright
@ -26,3 +51,33 @@ Visit [stack.jimmycai.com](https://stack.jimmycai.com)
Please do not remove the "*Theme Stack designed by Jimmy*" text and link. Please do not remove the "*Theme Stack designed by Jimmy*" text and link.
If you want to port this theme to another blogging platform, please let me know🙏. If you want to port this theme to another blogging platform, please let me know🙏.
## Sponsoring
If you like this theme, give it a star, and consider supporting its development:
[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/C0C530AXX)
Your support is greatly appreciated :)
## Thanks to
| Project | Description | Licence |
| ------- | ----------- | ------- |
| [PhotoSwipe](https://photoswipe.com/) | For the lightbox effect | [MIT](https://github.com/dimsemenov/PhotoSwipe/blob/master/LICENSE) |
| [Normalize.css](https://github.com/necolas/normalize.css) | - | [MIT](https://github.com/necolas/normalize.css/blob/master/LICENSE.md) |
| [Node Vibrant](https://github.com/Vibrant-Colors/node-vibrant) | To extract the color from images | [MIT](https://github.com/Vibrant-Colors/node-vibrant/blob/master/LICENSE.md)
| [Tabler icons](https://github.com/tabler/tabler-icons) | Default menu icons | [MIT](https://github.com/tabler/tabler-icons/blob/master/LICENSE) |
| [jonsuh/hamburgers](https://github.com/jonsuh/hamburgers) | Hamburger icon of menu | [MIT](https://github.com/jonsuh/hamburgers/blob/master/LICENSE) |
| [lepture/yue.css](https://github.com/lepture/yue.css) | Part of it is used for styling article content | MIT |
| [Typlog](https://typlog.com/) | Where the markdown gallery syntax is borrowed from | The author gave me the permission |
| [Pure CSS implementation of Google Photos / 500px image layout](https://github.com/xieranmaya/blog/issues/6) | Used for image gallery | - |
### References
Some references that I took while building this theme:
| Project | Licence|
| ------- | ------|
| [artchen/hexo-theme-element](https://github.com/artchen/hexo-theme-element) | [MIT](https://github.com/artchen/hexo-theme-element/blob/master/LICENSE) |
| [MunifTanjim/minimo](https://github.com/MunifTanjim/minimo) | [MIT](https://github.com/MunifTanjim/minimo/blob/master/LICENSE) |

View File

@ -1,31 +0,0 @@
a {
text-decoration: none;
color: var(--accent-color);
&:hover {
color: var(--accent-color-darker);
}
&.link {
box-shadow: 0px -2px 0px rgba(var(--link-background-color), var(--link-background-opacity)) inset;
transition: all 0.3s ease;
&:hover {
box-shadow: 0px calc(-1rem * var(--article-line-height)) 0px rgba(var(--link-background-color), var(--link-background-opacity-hover)) inset;
}
}
}
.section-title {
text-transform: uppercase;
margin-top: 0;
margin-bottom: 10px;
display: block;
font-size: 1.6rem;
font-weight: bold;
color: var(--body-text-color);
a {
color: var(--body-text-color);
}
}

View File

@ -3,12 +3,10 @@
margin-right: auto; margin-right: auto;
.left-sidebar { .left-sidebar {
order: -3;
max-width: var(--left-sidebar-max-width); max-width: var(--left-sidebar-max-width);
} }
.right-sidebar { .right-sidebar {
order: -1;
max-width: var(--right-sidebar-max-width); max-width: var(--right-sidebar-max-width);
/// Display right sidebar when min-width: lg /// Display right sidebar when min-width: lg
@ -75,7 +73,6 @@
} }
main.main { main.main {
order: -2;
min-width: 0; min-width: 0;
max-width: 100%; max-width: 100%;
flex-grow: 1; flex-grow: 1;

View File

@ -54,7 +54,6 @@
} }
.article-title { .article-title {
font-family: var(--article-font-family);
font-weight: 600; font-weight: 600;
margin: 0; margin: 0;
color: var(--card-text-color-main); color: var(--card-text-color-main);
@ -93,15 +92,16 @@
.article-time, .article-time,
.article-translations { .article-translations {
display: flex; display: flex;
align-items: center;
color: var(--card-text-color-tertiary); color: var(--card-text-color-tertiary);
gap: 15px; gap: 15px;
flex-wrap: wrap;
svg { svg {
vertical-align: middle; vertical-align: middle;
width: 20px; width: 20px;
height: 20px; height: 20px;
stroke-width: 1.33; stroke-width: 1.33;
flex-shrink: 0;
} }
time, time,
@ -117,21 +117,10 @@
} }
} }
.article-time {
flex-wrap: wrap;
}
.article-translations {
& > div {
flex-wrap: wrap;
}
}
.article-category, .article-category,
.article-tags { .article-tags {
display: flex; display: flex;
gap: 10px; gap: 10px;
flex-wrap: wrap;
a { a {
color: var(--accent-color-text); color: var(--accent-color-text);

View File

@ -1,428 +0,0 @@
/* Background */
.chroma {
color: $color;
background-color: $background-color;
}
/* Other */
.chroma .x {
}
/* Error */
.chroma .err {
color: $error-color;
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
width: 100%;
display: block;
> tbody {
display: block;
width: 100%;
> tr {
display: flex;
width: 100%;
> td:last-child {
overflow-x: auto;
}
}
}
}
/* 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;
display: block;
}
/* LineNumbers */
.chroma .ln {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
color: #7f7f7f;
}
/* Keyword */
.chroma .k {
color: $keyword-color;
}
/* KeywordConstant */
.chroma .kc {
color: $keyword-color;
}
/* KeywordDeclaration */
.chroma .kd {
color: $keyword-color;
}
/* KeywordNamespace */
.chroma .kn {
color: #f92672;
}
/* KeywordPseudo */
.chroma .kp {
color: $keyword-color;
}
/* KeywordReserved */
.chroma .kr {
color: $keyword-color;
}
/* KeywordType */
.chroma .kt {
color: $keyword-color;
}
/* Name */
.chroma .n {
color: $text-color;
}
/* NameAttribute */
.chroma .na {
color: $name-color;
}
/* NameBuiltin */
.chroma .nb {
color: $text-color;
}
/* NameBuiltinPseudo */
.chroma .bp {
color: $text-color;
}
/* NameClass */
.chroma .nc {
color: $name-color;
}
/* NameConstant */
.chroma .no {
color: $keyword-color;
}
/* NameDecorator */
.chroma .nd {
color: $name-color;
}
/* NameEntity */
.chroma .ni {
color: $text-color;
}
/* NameException */
.chroma .ne {
color: $name-color;
}
/* NameFunction */
.chroma .nf {
color: $name-color;
}
/* NameFunctionMagic */
.chroma .fm {
color: $text-color;
}
/* NameLabel */
.chroma .nl {
color: $text-color;
}
/* NameNamespace */
.chroma .nn {
color: $text-color;
}
/* NameOther */
.chroma .nx {
color: $name-color;
}
/* NameProperty */
.chroma .py {
color: $text-color;
}
/* NameTag */
.chroma .nt {
color: #f92672;
}
/* NameVariable */
.chroma .nv {
color: $text-color;
}
/* NameVariableClass */
.chroma .vc {
color: $text-color;
}
/* NameVariableGlobal */
.chroma .vg {
color: $text-color;
}
/* NameVariableInstance */
.chroma .vi {
color: $text-color;
}
/* NameVariableMagic */
.chroma .vm {
color: $text-color;
}
/* Literal */
.chroma .l {
color: #ae81ff;
}
/* LiteralDate */
.chroma .ld {
color: $literal-color;
}
/* LiteralString */
.chroma .s {
color: $literal-color;
}
/* LiteralStringAffix */
.chroma .sa {
color: $literal-color;
}
/* LiteralStringBacktick */
.chroma .sb {
color: $literal-color;
}
/* LiteralStringChar */
.chroma .sc {
color: $literal-color;
}
/* LiteralStringDelimiter */
.chroma .dl {
color: $literal-color;
}
/* LiteralStringDoc */
.chroma .sd {
color: $literal-color;
}
/* LiteralStringDouble */
.chroma .s2 {
color: $literal-color;
}
/* LiteralStringEscape */
.chroma .se {
color: #ae81ff;
}
/* LiteralStringHeredoc */
.chroma .sh {
color: $literal-color;
}
/* LiteralStringInterpol */
.chroma .si {
color: $literal-color;
}
/* LiteralStringOther */
.chroma .sx {
color: $literal-color;
}
/* LiteralStringRegex */
.chroma .sr {
color: $literal-color;
}
/* LiteralStringSingle */
.chroma .s1 {
color: $literal-color;
}
/* LiteralStringSymbol */
.chroma .ss {
color: $literal-color;
}
/* LiteralNumber */
.chroma .m {
color: #ae81ff;
}
/* LiteralNumberBin */
.chroma .mb {
color: #ae81ff;
}
/* LiteralNumberFloat */
.chroma .mf {
color: #ae81ff;
}
/* LiteralNumberHex */
.chroma .mh {
color: #ae81ff;
}
/* LiteralNumberInteger */
.chroma .mi {
color: #ae81ff;
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #ae81ff;
}
/* LiteralNumberOct */
.chroma .mo {
color: #ae81ff;
}
/* Operator */
.chroma .o {
color: #f92672;
}
/* OperatorWord */
.chroma .ow {
color: #f92672;
}
/* Punctuation */
.chroma .p {
color: $text-color;
}
/* Comment */
.chroma .c {
color: #75715e;
}
/* CommentHashbang */
.chroma .ch {
color: #75715e;
}
/* CommentMultiline */
.chroma .cm {
color: #75715e;
}
/* CommentSingle */
.chroma .c1 {
color: #75715e;
}
/* CommentSpecial */
.chroma .cs {
color: #75715e;
}
/* CommentPreproc */
.chroma .cp {
color: #75715e;
}
/* CommentPreprocFile */
.chroma .cpf {
color: #75715e;
}
/* Generic */
.chroma .g {
}
/* GenericDeleted */
.chroma .gd {
color: #f92672;
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericError */
.chroma .gr {
}
/* GenericHeading */
.chroma .gh {
}
/* GenericInserted */
.chroma .gi {
color: $name-color;
}
/* GenericOutput */
.chroma .go {
}
/* GenericPrompt */
.chroma .gp {
}
/* GenericStrong */
.chroma .gs {
font-weight: bold;
}
/* GenericSubheading */
.chroma .gu {
color: #75715e;
}
/* GenericTraceback */
.chroma .gt {
}
/* GenericUnderline */
.chroma .gl {
}
/* TextWhitespace */
.chroma .w {
}

View File

@ -3,12 +3,382 @@
* https://xyproto.github.io/splash/docs/monokai.html * https://xyproto.github.io/splash/docs/monokai.html
*/ */
$color: #f8f8f2; /* Background */
$background-color: #272822; .chroma {
$error-color: #bb0064; color: #f8f8f2;
$keyword-color: #66d9ef; background-color: #272822
$text-color: $color; }
$name-color: #a6e22e;
$literal-color: #e6db74;
@import "common.scss"; /* Other */
.chroma .x {}
/* Error */
.chroma .err {
color: #bb0064;
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
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: #66d9ef
}
/* KeywordConstant */
.chroma .kc {
color: #66d9ef
}
/* KeywordDeclaration */
.chroma .kd {
color: #66d9ef
}
/* KeywordNamespace */
.chroma .kn {
color: #f92672
}
/* KeywordPseudo */
.chroma .kp {
color: #66d9ef
}
/* KeywordReserved */
.chroma .kr {
color: #66d9ef
}
/* KeywordType */
.chroma .kt {
color: #66d9ef
}
/* Name */
.chroma .n {}
/* NameAttribute */
.chroma .na {
color: #a6e22e
}
/* NameBuiltin */
.chroma .nb {}
/* NameBuiltinPseudo */
.chroma .bp {}
/* NameClass */
.chroma .nc {
color: #a6e22e
}
/* NameConstant */
.chroma .no {
color: #66d9ef
}
/* NameDecorator */
.chroma .nd {
color: #a6e22e
}
/* NameEntity */
.chroma .ni {}
/* NameException */
.chroma .ne {
color: #a6e22e
}
/* NameFunction */
.chroma .nf {
color: #a6e22e
}
/* NameFunctionMagic */
.chroma .fm {}
/* NameLabel */
.chroma .nl {}
/* NameNamespace */
.chroma .nn {}
/* NameOther */
.chroma .nx {
color: #a6e22e
}
/* NameProperty */
.chroma .py {}
/* NameTag */
.chroma .nt {
color: #f92672
}
/* NameVariable */
.chroma .nv {}
/* NameVariableClass */
.chroma .vc {}
/* NameVariableGlobal */
.chroma .vg {}
/* NameVariableInstance */
.chroma .vi {}
/* NameVariableMagic */
.chroma .vm {}
/* Literal */
.chroma .l {
color: #ae81ff
}
/* LiteralDate */
.chroma .ld {
color: #e6db74
}
/* LiteralString */
.chroma .s {
color: #e6db74
}
/* LiteralStringAffix */
.chroma .sa {
color: #e6db74
}
/* LiteralStringBacktick */
.chroma .sb {
color: #e6db74
}
/* LiteralStringChar */
.chroma .sc {
color: #e6db74
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #e6db74
}
/* LiteralStringDoc */
.chroma .sd {
color: #e6db74
}
/* LiteralStringDouble */
.chroma .s2 {
color: #e6db74
}
/* LiteralStringEscape */
.chroma .se {
color: #ae81ff
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #e6db74
}
/* LiteralStringInterpol */
.chroma .si {
color: #e6db74
}
/* LiteralStringOther */
.chroma .sx {
color: #e6db74
}
/* LiteralStringRegex */
.chroma .sr {
color: #e6db74
}
/* LiteralStringSingle */
.chroma .s1 {
color: #e6db74
}
/* LiteralStringSymbol */
.chroma .ss {
color: #e6db74
}
/* LiteralNumber */
.chroma .m {
color: #ae81ff
}
/* LiteralNumberBin */
.chroma .mb {
color: #ae81ff
}
/* LiteralNumberFloat */
.chroma .mf {
color: #ae81ff
}
/* LiteralNumberHex */
.chroma .mh {
color: #ae81ff
}
/* LiteralNumberInteger */
.chroma .mi {
color: #ae81ff
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #ae81ff
}
/* LiteralNumberOct */
.chroma .mo {
color: #ae81ff
}
/* Operator */
.chroma .o {
color: #f92672
}
/* OperatorWord */
.chroma .ow {
color: #f92672
}
/* Punctuation */
.chroma .p {}
/* Comment */
.chroma .c {
color: #75715e
}
/* CommentHashbang */
.chroma .ch {
color: #75715e
}
/* CommentMultiline */
.chroma .cm {
color: #75715e
}
/* CommentSingle */
.chroma .c1 {
color: #75715e
}
/* CommentSpecial */
.chroma .cs {
color: #75715e
}
/* CommentPreproc */
.chroma .cp {
color: #75715e
}
/* CommentPreprocFile */
.chroma .cpf {
color: #75715e
}
/* Generic */
.chroma .g {}
/* GenericDeleted */
.chroma .gd {
color: #f92672
}
/* GenericEmph */
.chroma .ge {
font-style: italic
}
/* GenericError */
.chroma .gr {}
/* GenericHeading */
.chroma .gh {}
/* GenericInserted */
.chroma .gi {
color: #a6e22e
}
/* GenericOutput */
.chroma .go {}
/* GenericPrompt */
.chroma .gp {}
/* GenericStrong */
.chroma .gs {
font-weight: bold
}
/* GenericSubheading */
.chroma .gu {
color: #75715e
}
/* GenericTraceback */
.chroma .gt {}
/* GenericUnderline */
.chroma .gl {}
/* TextWhitespace */
.chroma .w {}

View File

@ -3,12 +3,407 @@
* https://xyproto.github.io/splash/docs/monokailight.html * https://xyproto.github.io/splash/docs/monokailight.html
*/ */
$color: #272822; /* Background */
$background-color: #fafafa; .chroma {
$error-color: #960050; color: #272822;
$keyword-color: #00a8c8; background-color: #fafafa;
$text-color: #111111; }
$name-color: #75af00;
$literal-color: #d88200;
@import "common.scss"; /* Other */
.chroma .x {
}
/* Error */
.chroma .err {
color: #960050;
}
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
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: #00a8c8;
}
/* KeywordConstant */
.chroma .kc {
color: #00a8c8;
}
/* KeywordDeclaration */
.chroma .kd {
color: #00a8c8;
}
/* KeywordNamespace */
.chroma .kn {
color: #f92672;
}
/* KeywordPseudo */
.chroma .kp {
color: #00a8c8;
}
/* KeywordReserved */
.chroma .kr {
color: #00a8c8;
}
/* KeywordType */
.chroma .kt {
color: #00a8c8;
}
/* Name */
.chroma .n {
color: #111111;
}
/* NameAttribute */
.chroma .na {
color: #75af00;
}
/* NameBuiltin */
.chroma .nb {
color: #111111;
}
/* NameBuiltinPseudo */
.chroma .bp {
color: #111111;
}
/* NameClass */
.chroma .nc {
color: #75af00;
}
/* NameConstant */
.chroma .no {
color: #00a8c8;
}
/* NameDecorator */
.chroma .nd {
color: #75af00;
}
/* NameEntity */
.chroma .ni {
color: #111111;
}
/* NameException */
.chroma .ne {
color: #75af00;
}
/* NameFunction */
.chroma .nf {
color: #75af00;
}
/* NameFunctionMagic */
.chroma .fm {
color: #111111;
}
/* NameLabel */
.chroma .nl {
color: #111111;
}
/* NameNamespace */
.chroma .nn {
color: #111111;
}
/* NameOther */
.chroma .nx {
color: #75af00;
}
/* NameProperty */
.chroma .py {
color: #111111;
}
/* NameTag */
.chroma .nt {
color: #f92672;
}
/* NameVariable */
.chroma .nv {
color: #111111;
}
/* NameVariableClass */
.chroma .vc {
color: #111111;
}
/* NameVariableGlobal */
.chroma .vg {
color: #111111;
}
/* NameVariableInstance */
.chroma .vi {
color: #111111;
}
/* NameVariableMagic */
.chroma .vm {
color: #111111;
}
/* Literal */
.chroma .l {
color: #ae81ff;
}
/* LiteralDate */
.chroma .ld {
color: #d88200;
}
/* LiteralString */
.chroma .s {
color: #d88200;
}
/* LiteralStringAffix */
.chroma .sa {
color: #d88200;
}
/* LiteralStringBacktick */
.chroma .sb {
color: #d88200;
}
/* LiteralStringChar */
.chroma .sc {
color: #d88200;
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #d88200;
}
/* LiteralStringDoc */
.chroma .sd {
color: #d88200;
}
/* LiteralStringDouble */
.chroma .s2 {
color: #d88200;
}
/* LiteralStringEscape */
.chroma .se {
color: #8045ff;
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #d88200;
}
/* LiteralStringInterpol */
.chroma .si {
color: #d88200;
}
/* LiteralStringOther */
.chroma .sx {
color: #d88200;
}
/* LiteralStringRegex */
.chroma .sr {
color: #d88200;
}
/* LiteralStringSingle */
.chroma .s1 {
color: #d88200;
}
/* LiteralStringSymbol */
.chroma .ss {
color: #d88200;
}
/* LiteralNumber */
.chroma .m {
color: #ae81ff;
}
/* LiteralNumberBin */
.chroma .mb {
color: #ae81ff;
}
/* LiteralNumberFloat */
.chroma .mf {
color: #ae81ff;
}
/* LiteralNumberHex */
.chroma .mh {
color: #ae81ff;
}
/* LiteralNumberInteger */
.chroma .mi {
color: #ae81ff;
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #ae81ff;
}
/* LiteralNumberOct */
.chroma .mo {
color: #ae81ff;
}
/* Operator */
.chroma .o {
color: #f92672;
}
/* OperatorWord */
.chroma .ow {
color: #f92672;
}
/* Punctuation */
.chroma .p {
color: #111111;
}
/* Comment */
.chroma .c {
color: #75715e;
}
/* CommentHashbang */
.chroma .ch {
color: #75715e;
}
/* CommentMultiline */
.chroma .cm {
color: #75715e;
}
/* CommentSingle */
.chroma .c1 {
color: #75715e;
}
/* CommentSpecial */
.chroma .cs {
color: #75715e;
}
/* CommentPreproc */
.chroma .cp {
color: #75715e;
}
/* CommentPreprocFile */
.chroma .cpf {
color: #75715e;
}
/* Generic */
.chroma .g {
}
/* GenericDeleted */
.chroma .gd {
color: #f92672;
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericError */
.chroma .gr {
}
/* GenericHeading */
.chroma .gh {
}
/* GenericInserted */
.chroma .gi {
color: #7ca727;
}
/* GenericOutput */
.chroma .go {
}
/* GenericPrompt */
.chroma .gp {
}
/* GenericStrong */
.chroma .gs {
font-weight: bold;
}
/* GenericSubheading */
.chroma .gu {
color: #75715e;
}
/* GenericTraceback */
.chroma .gt {
}
/* GenericUnderline */
.chroma .gl {
}
/* TextWhitespace */
.chroma .w {
}

View File

@ -33,10 +33,6 @@
margin: var(--card-padding) 0; margin: var(--card-padding) 0;
color: var(--card-text-color-main); color: var(--card-text-color-main);
.footnotes {
font-family: var(--base-font-family);
}
img { img {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
@ -67,6 +63,7 @@
} }
.article-tags { .article-tags {
flex-wrap: wrap;
text-transform: unset; text-transform: unset;
} }
@ -75,15 +72,52 @@
a { a {
color: var(--body-text-color); color: var(--body-text-color);
} }
a.link {
box-shadow: unset;
}
} }
} }
} }
} }
#article-toolbar {
display: flex;
align-items: center;
margin: 20px 0;
@include respond(md) {
display: none;
}
.back-home {
background: var(--card-background);
border-radius: var(--tag-border-radius);
color: var(--card-text-color-tertiary);
margin-right: 30px;
display: inline-flex;
align-items: center;
font-size: 1.4rem;
text-transform: uppercase;
padding: 10px 20px 10px 15px;
transition: box-shadow 0.3s ease;
box-shadow: var(--shadow-l1);
&:hover {
box-shadow: var(--shadow-l2);
}
svg {
margin-right: 5px;
width: 20px;
height: 20px;
}
span {
font-weight: 500;
white-space: nowrap;
}
}
}
.widget--toc { .widget--toc {
background-color: var(--card-background); background-color: var(--card-background);
border-radius: var(--card-border-radius); border-radius: var(--card-border-radius);
@ -111,7 +145,7 @@
list-style-type: none; list-style-type: none;
counter-reset: item; counter-reset: item;
li a:first-of-type::before { li a::before {
counter-increment: item; counter-increment: item;
content: counters(item, ".") ". "; content: counters(item, ".") ". ";
font-weight: bold; font-weight: bold;
@ -173,7 +207,7 @@
} }
} }
.related-content { .related-contents {
overflow-x: auto; overflow-x: auto;
padding-bottom: 15px; padding-bottom: 15px;
@ -221,28 +255,6 @@
margin-inline-start: calc((var(--card-padding)) * -1); margin-inline-start: calc((var(--card-padding)) * -1);
padding-inline-start: calc(var(--card-padding) - var(--heading-border-size)); padding-inline-start: calc(var(--card-padding) - var(--heading-border-size));
border-inline-start: var(--heading-border-size) solid var(--accent-color); border-inline-start: var(--heading-border-size) solid var(--accent-color);
position: relative;
a.header-anchor {
transition: opacity 0.3s ease;
opacity: 0;
position: absolute;
left: 0;
width: var(--card-padding);
text-align: center;
color: var(--accent-color);
&:before {
content: "#";
}
}
&:hover,
&:focus {
a.header-anchor {
opacity: 1;
}
}
} }
figure { figure {
@ -260,16 +272,6 @@
border-inline-start: var(--blockquote-border-size) solid var(--card-separator-color); border-inline-start: var(--blockquote-border-size) solid var(--card-separator-color);
padding: 15px calc(var(--card-padding) - var(--blockquote-border-size)); padding: 15px calc(var(--card-padding) - var(--blockquote-border-size));
background-color: var(--blockquote-background-color); background-color: var(--blockquote-background-color);
.cite {
display: block;
text-align: right;
font-size: 0.75em;
a {
text-decoration: underline;
}
}
} }
hr { hr {
@ -289,11 +291,6 @@
font-family: var(--code-font-family); font-family: var(--code-font-family);
} }
a,
code {
word-break: break-word;
}
.gallery { .gallery {
position: relative; position: relative;
display: flex; display: flex;
@ -417,18 +414,6 @@
} }
} }
.gitlab-embed-snippets {
margin: 0 !important;
.file-holder.snippet-file-content {
margin-block-end: 0 !important;
margin-block-start: 0 !important;
margin-left: calc((var(--card-padding)) * -1) !important;
margin-right: calc((var(--card-padding)) * -1) !important;
padding: 0 var(--card-padding) !important;
}
}
/// Negative margins /// Negative margins
blockquote, blockquote,
figure, figure,
@ -442,20 +427,4 @@
margin-right: calc((var(--card-padding)) * -1); margin-right: calc((var(--card-padding)) * -1);
width: calc(100% + var(--card-padding) * 2); width: calc(100% + var(--card-padding) * 2);
} }
/// Make long KaTeX equations scrollable in the x-axis
.katex-display > .katex {
overflow-x: auto;
overflow-y: hidden;
}
kbd {
border: 1px solid var(--kbd-border-color);
font-weight: bold;
font-size: 0.9em;
line-height: 1;
padding: 2px 4px;
border-radius: 4px;
display: inline-block;
}
} }

View File

@ -127,8 +127,10 @@
} }
/* Menu style */ /* Menu style */
#main-menu { .menu {
padding-left: 0;
list-style: none; list-style: none;
flex-direction: column;
overflow-y: auto; overflow-y: auto;
flex-grow: 1; flex-grow: 1;
font-size: 1.4rem; font-size: 1.4rem;
@ -139,15 +141,13 @@
margin: 0 calc(var(--container-padding) * -1); margin: 0 calc(var(--container-padding) * -1);
padding: 30px 30px; padding: 30px 30px;
@include respond(xl) { @include respond(xl) {
padding: 15px 0; padding: 15px 0;
} }
&, .menu-bottom-section ol { &,
flex-direction: column; .menu-bottom-section {
gap: 30px; gap: 30px;
@include respond(xl) { @include respond(xl) {
gap: 25px; gap: 25px;
} }
@ -176,8 +176,8 @@
} }
svg { svg {
stroke: currentColor;
stroke-width: 1.33; stroke-width: 1.33;
width: 20px; width: 20px;
height: 20px; height: 20px;
} }
@ -200,19 +200,17 @@
font-weight: bold; font-weight: bold;
} }
} }
}
&.menu-bottom-section { .menu-bottom-section {
margin-top: auto; margin-top: auto;
display: flex;
ol { flex-direction: column;
display: flex; width: 100%;
padding-left: 0;
}
}
} }
} }
.menu-social { .social-menu {
list-style: none; list-style: none;
padding: 0; padding: 0;
margin: 0; margin: 0;

View File

@ -79,7 +79,6 @@
@include respond(lg) { @include respond(lg) {
padding-top: var(--main-top-padding); padding-top: var(--main-top-padding);
padding-bottom: var(--main-top-padding);
} }
} }

View File

@ -24,5 +24,36 @@
@import "partials/layout/404.scss"; @import "partials/layout/404.scss";
@import "partials/layout/search.scss"; @import "partials/layout/search.scss";
@import "general.scss";
@import "custom.scss"; @import "custom.scss";
a {
text-decoration: none;
color: var(--accent-color);
&:hover {
color: var(--accent-color-darker);
}
&.link {
box-shadow: 0px -2px 0px rgba(var(--link-background-color), var(--link-background-opacity)) inset;
transition: all 0.3s ease;
&:hover {
box-shadow: 0px -10px 0px rgba(var(--link-background-color), var(--link-background-opacity-hover)) inset;
}
}
}
.section-title {
text-transform: uppercase;
margin-top: 0;
margin-bottom: 10px;
display: block;
font-size: 1.6rem;
font-weight: bold;
color: var(--body-text-color);
a {
color: var(--body-text-color);
}
}

View File

@ -16,7 +16,7 @@ $defaultTagColors: #fff, #fff, #fff, #fff, #fff;
--accent-color: #34495e; --accent-color: #34495e;
--accent-color-darker: #2c3e50; --accent-color-darker: #2c3e50;
--accent-color-text: #fff; --accent-color-text: #fff;
--body-text-color: #707070; --body-text-color: #bababa;
--tag-border-radius: 4px; --tag-border-radius: 4px;
@ -44,7 +44,7 @@ $defaultTagColors: #fff, #fff, #fff, #fff, #fff;
--zh-font-family: "PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei"; --zh-font-family: "PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei";
--base-font-family: "Lato", var(--sys-font-family), var(--zh-font-family), sans-serif; --base-font-family: "Lato", var(--sys-font-family), var(--zh-font-family), sans-serif;
--code-font-family: Menlo, Monaco, Consolas, "Courier New", var(--zh-font-family), monospace; --code-font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
} }
/* /*
@ -56,7 +56,7 @@ $defaultTagColors: #fff, #fff, #fff, #fff, #fff;
--card-text-color-main: #000; --card-text-color-main: #000;
--card-text-color-secondary: #747474; --card-text-color-secondary: #747474;
--card-text-color-tertiary: #767676; --card-text-color-tertiary: #bababa;
--card-separator-color: rgba(218, 218, 218, 0.5); --card-separator-color: rgba(218, 218, 218, 0.5);
--card-border-radius: 10px; --card-border-radius: 10px;
@ -123,8 +123,6 @@ $defaultTagColors: #fff, #fff, #fff, #fff, #fff;
--table-border-color: #dadada; --table-border-color: #dadada;
--tr-even-background-color: #efefee; --tr-even-background-color: #efefee;
--kbd-border-color: #dadada;
&[data-scheme="dark"] { &[data-scheme="dark"] {
--code-background-color: #272822; --code-background-color: #272822;
--code-text-color: rgba(255, 255, 255, 0.9); --code-text-color: rgba(255, 255, 255, 0.9);

View File

@ -8,10 +8,6 @@ class StackColorScheme {
constructor(toggleEl: HTMLElement) { constructor(toggleEl: HTMLElement) {
this.bindMatchMedia(); this.bindMatchMedia();
this.currentScheme = this.getSavedScheme(); this.currentScheme = this.getSavedScheme();
if (window.matchMedia('(prefers-color-scheme: dark)').matches === true)
this.systemPreferScheme = 'dark'
else
this.systemPreferScheme = 'light';
this.dispatchEvent(document.documentElement.dataset.scheme as colorScheme); this.dispatchEvent(document.documentElement.dataset.scheme as colorScheme);

View File

@ -53,14 +53,7 @@ class Search {
this.resultTitle = resultTitle; this.resultTitle = resultTitle;
this.resultTitleTemplate = resultTitleTemplate; this.resultTitleTemplate = resultTitleTemplate;
/// Check if there's already value in the search input this.handleQueryString();
if (this.input.value.trim() !== '') {
this.doSearch(this.input.value.split(' '));
}
else {
this.handleQueryString();
}
this.bindQueryStringChange(); this.bindQueryStringChange();
this.bindSearchForm(); this.bindSearchForm();
} }
@ -234,7 +227,6 @@ class Search {
Search.updateQueryString(keywords, true); Search.updateQueryString(keywords, true);
if (keywords === '') { if (keywords === '') {
lastSearch = '';
return this.clear(); return this.clear();
} }

View File

@ -21,15 +21,12 @@ function setupSmoothAnchors() {
aElement.addEventListener("click", clickEvent => { aElement.addEventListener("click", clickEvent => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const targetId = decodeURI(aElement.getAttribute("href").substring(1)), let targetId = aElement.getAttribute("href").substring(1);
target = document.getElementById(targetId) as HTMLElement, // The replace done on ':' is here for footnotes, as this character would otherwise interfere when used as a CSS selector.
offset = target.getBoundingClientRect().top - document.documentElement.getBoundingClientRect().top; let target = document.querySelector(`#${targetId.replace(":", "\\:")}`) as HTMLElement;
window.history.pushState({}, "", aElement.getAttribute("href")); window.history.pushState({}, "", aElement.getAttribute("href"));
scrollTo({ scrollTo({ top: target.offsetTop, behavior: "smooth" });
top: offset,
behavior: "smooth"
});
}); });
}); });
} }

View File

@ -28,7 +28,6 @@ params:
src: img/avatar.png src: img/avatar.png
article: article:
headingAnchor: false
math: false math: false
toc: true toc: true
readingTime: true readingTime: true
@ -52,12 +51,6 @@ params:
issueTerm: pathname issueTerm: pathname
label: label:
beaudar:
repo:
issueTerm: pathname
label:
theme:
remark42: remark42:
host: host:
site: site:
@ -71,7 +64,7 @@ params:
clientSecret: clientSecret:
autoCreateIssue: false autoCreateIssue: false
# Waline client configuration see: https://waline.js.org/en/reference/client/props.html # Waline client configuration see: https://waline.js.org/en/reference/client.html
waline: waline:
serverURL: serverURL:
lang: lang:
@ -80,11 +73,12 @@ params:
emoji: emoji:
- https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo - https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo
requiredMeta: requiredMeta:
- nick - name
- mail - email
- url
placeholder:
locale: locale:
admin: Admin admin: Admin
placeholder:
twikoo: twikoo:
envId: envId:
@ -98,12 +92,10 @@ params:
category: category:
categoryID: categoryID:
mapping: mapping:
strict:
lightTheme: lightTheme:
darkTheme: darkTheme:
reactionsEnabled: 1 reactionsEnabled: 1
emitMetadata: 0 emitMetadata: 0
inputPosition:
lang: lang:
gitalk: gitalk:

View File

@ -1,6 +1,6 @@
Vibrant: Vibrant:
- src: https://cdn.jsdelivr.net/npm/node-vibrant@3.1.6/dist/vibrant.min.js - src: https://cdn.jsdelivr.net/npm/node-vibrant@3.1.5/dist/vibrant.min.js
integrity: sha256-awcR2jno4kI5X0zL8ex0vi2z+KMkF24hUW8WePSA9HM= integrity: sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=
type: script type: script
PhotoSwipe: PhotoSwipe:
@ -14,24 +14,26 @@ PhotoSwipe:
type: script type: script
defer: true defer: true
- src: https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.min.css - src: https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/default-skin/default-skin.css
integrity: sha256-c0uckgykQ9v5k+IqViZOZKc47Jn7KQil4/MP3ySA3F8=
type: style type: style
- src: https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.min.css - src: https://cdn.jsdelivr.net/npm/photoswipe@4.1.3/dist/photoswipe.css
integrity: sha256-SBLU4vv6CA6lHsZ1XyTdhyjJxCjPif/TRkjnsyGAGnE=
type: style type: style
KaTeX: KaTeX:
- src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css - src: https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.css
integrity: sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV integrity: sha384-RZU/ijkSsFbcmivfdRBQDtwuwVqK7GMOw6IMvKyeWL2K5UAlyp6WonmB8m7Jd0Hn
type: style type: style
- src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js - src: https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.js
integrity: sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8 integrity: sha384-pK1WpvzWVBQiP0/GjnvRxV4mOb0oxFuyRxJlk6vVw146n3egcN5C925NCP7a7BY8
type: script type: script
defer: true defer: true
- src: https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js - src: https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/contrib/auto-render.min.js
integrity: sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05 integrity: sha384-vZTG03m+2yp6N6BNi5iM4rW4oIwk5DfcNdFfxkk9ZWpDriOkXX8voJBFrAO7MpVl
type: script type: script
defer: true defer: true

View File

@ -1,3 +1 @@
This is an example site used for solely for testing purposes. **It is not meant to be used as a template for your site**. Example site modified from https://github.com/gohugoio/hugoBasicExample
To create a new site, please use the starter template: [CaiJimmy/hugo-theme-stack-starter](https://github.com/CaiJimmy/hugo-theme-stack-starter/)

View File

@ -1,51 +1,37 @@
baseurl: https://example.com/ baseurl: https://example.com
languageCode: en-us languageCode: en-us
theme: hugo-theme-stack theme: hugo-theme-stack
paginate: 5
title: Example Site title: Example Site
copyright: Example Person
# Theme i18n support
# Available values: ar, bn, ca, de, el, en, es, fr, hu, id, it, ja, ko, nl, pt-br, th, uk, zh-cn, zh-hk, zh-tw
DefaultContentLanguage: en
# Set hasCJKLanguage to true if DefaultContentLanguage is in [zh-cn ja ko]
# This will make .Summary and .WordCount behave correctly for CJK languages.
hasCJKLanguage: false
languages: languages:
en: en:
languageName: English languageName: English
title: Example Site title: Example Site
weight: 1 weight: 1
params: cn:
sidebar:
subtitle: Example description
zh-cn:
languageName: 中文 languageName: 中文
title: 演示站点 title: 演示站点
weight: 2 weight: 2
params:
sidebar:
subtitle: 演示说明
ar: ar:
languageName: عربي languageName: عربي
languagedirection: rtl languagedirection: rtl
title: موقع تجريبي title: موقع تجريبي
weight: 3 weight: 3
params:
sidebar:
subtitle: وصف تجريبي
services: # Change it to your Disqus shortname before using
# Change it to your Disqus shortname before using disqusShortname: hugo-theme-stack
disqus:
shortname: "hugo-theme-stack"
# GA Tracking ID
googleAnalytics:
id:
pagination: # GA Tracking ID
pagerSize: 3 googleAnalytics:
# Theme i18n support
# Available values: en, fr, id, ja, ko, pt-br, zh-cn, zh-tw, es, de, nl, it, th, el, uk, ar
DefaultContentLanguage: en
# Set hasCJKLanguage to true if DefaultContentLanguage is in [zh-cn ja ko]
# This will make .Summary and .WordCount behave correctly for CJK languages.
hasCJKLanguage: false
permalinks: permalinks:
post: /p/:slug/ post: /p/:slug/
@ -56,7 +42,7 @@ params:
- post - post
featuredImageField: image featuredImageField: image
rssFullContent: true rssFullContent: true
favicon: # e.g.: favicon placed in `static/favicon.ico` of your site folder, then set this field to `/favicon.ico` (`/` is necessary) favicon:
footer: footer:
since: 2020 since: 2020
@ -98,12 +84,6 @@ params:
issueTerm: pathname issueTerm: pathname
label: label:
beaudar:
repo:
issueTerm: pathname
label:
theme:
remark42: remark42:
host: host:
site: site:
@ -117,20 +97,21 @@ params:
clientSecret: clientSecret:
autoCreateIssue: false autoCreateIssue: false
# Waline client configuration see: https://waline.js.org/en/reference/component.html # Waline client configuration see: https://waline.js.org/en/reference/client.html
waline: waline:
serverURL: serverURL:
lang: lang:
pageview: visitor:
avatar:
emoji: emoji:
- https://unpkg.com/@waline/emojis@1.0.1/weibo - https://cdn.jsdelivr.net/gh/walinejs/emojis/weibo
requiredMeta: requiredMeta:
- name - name
- email - email
- url - url
placeholder:
locale: locale:
admin: Admin admin: Admin
placeholder:
twikoo: twikoo:
envId: envId:
@ -161,7 +142,6 @@ params:
repo: repo:
clientID: clientID:
clientSecret: clientSecret:
proxy:
cusdis: cusdis:
host: host:
@ -209,7 +189,7 @@ params:
enabled: true enabled: true
### Custom menu ### Custom menu
### See https://stack.jimmycai.com/config/menu ### See https://docs.stack.jimmycai.com/configuration/custom-menu.html
### To remove about, archive and search page menu item, remove `menu` field from their FrontMatter ### To remove about, archive and search page menu item, remove `menu` field from their FrontMatter
menu: menu:
main: [] main: []
@ -240,21 +220,9 @@ related:
markup: markup:
goldmark: goldmark:
extensions:
passthrough:
enable: true
delimiters:
block:
- - \[
- \]
- - $$
- $$
inline:
- - \(
- \)
renderer: renderer:
## Set to true if you have HTML content inside Markdown ## Set to true if you have HTML content inside Markdown
unsafe: true unsafe: false
tableOfContents: tableOfContents:
endLevel: 4 endLevel: 4
ordered: true ordered: true

View File

@ -0,0 +1,5 @@
---
title: 关于
---
This is a test page for i18n support.

View File

@ -15,7 +15,7 @@ menu:
icon: user icon: user
--- ---
Written in Go, Hugo is an open source static site generator available under the [Apache License 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
Hugo makes use of a variety of open source projects including: Hugo makes use of a variety of open source projects including:
@ -29,6 +29,6 @@ Hugo is ideal for blogs, corporate websites, creative portfolios, online magazin
Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
Learn more and contribute on [GitHub](https://github.com/gohugoio). Learn more and contribute on [GitHub](https://github.com/gohugoio).

View File

@ -1,10 +0,0 @@
---
title: 关于
menu:
main:
weight: -90
params:
icon: user
---
This is a test page for i18n support.

View File

@ -159,7 +159,7 @@ H<sub>2</sub>O
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup> X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
Press <kbd>CTRL</kbd> + <kbd>ALT</kbd> + <kbd>Delete</kbd> to end the session. Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures. Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.

View File

@ -21,23 +21,27 @@ In this example we will be using [KaTeX](https://katex.org/)
{{ end }} {{ end }}
``` ```
- To enable KaTeX globally set the parameter `math` to `true` in a project's configuration - To enable KaTex globally set the parameter `math` to `true` in a project's configuration
- To enable KaTeX on a per page basis include the parameter `math: true` in content files - To enable KaTex on a per page basis include the parameter `math: true` in content files
**Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html) **Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html)
{{< math.inline >}} {{< math.inline >}}
{{ if or .Page.Params.math .Site.Params.math }} {{ if or .Page.Params.math .Site.Params.math }}
<!-- KaTeX --> <!-- KaTeX -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css" integrity="sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js" integrity="sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8" crossorigin="anonymous"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
{{ end }} {{ end }}
{{</ math.inline >}} {{</ math.inline >}}
### Examples ### Examples
Inline math: $\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…$ {{< math.inline >}}
<p>
Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\)
</p>
{{</ math.inline >}}
Block math: Block math:
$$ $$

View File

@ -23,7 +23,7 @@ Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-manageme
## Twitter Simple Shortcode ## Twitter Simple Shortcode
{{< twitter_simple user="DesignReviewed" id="1085870671291310081" >}} {{< twitter_simple 1085870671291310081 >}}
<br> <br>
@ -39,29 +39,4 @@ Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-manageme
## Gist Shortcode ## Gist Shortcode
{{< gist spf13 7896402 >}} {{< gist spf13 7896402 >}}
## Gitlab Snippets Shortcode
{{< gitlab 2349278 >}}
## Quote Shortcode
Stack adds a `quote` shortcode. For example:
{{< quote author="A famous person" source="The book they wrote" url="https://en.wikipedia.org/wiki/Book">}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{< /quote >}}
{{< quote source="Anonymous book" url="https://en.wikipedia.org/wiki/Book">}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{< /quote >}}
{{< quote source="Some book">}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{< /quote >}}
{{< quote author="Somebody">}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
{{< /quote >}}

View File

@ -23,15 +23,15 @@ article:
tableOfContents: tableOfContents:
other: جدول المحتويات other: جدول المحتويات
relatedContent: relatedContents:
other: محتوى مشابهه other: محتوى مشابهه
lastUpdatedOn: lastUpdatedOn:
other: التعديل الاخير other: التعديل الاخير
readingTime: readingTime:
one: "تُقرأ خلال دقيقة" one: "قرائة {{ .Count }} دقيقة"
other: "تُقرأ خلال {{ .Count }} دقائق" other: "قرائة {{ .Count }} دقائق"
notFound: notFound:
title: title:
@ -51,10 +51,6 @@ widget:
tagCloud: tagCloud:
title: title:
other: وسوم other: وسوم
categoriesCloud:
title:
other: التصنيفات
search: search:
title: title:
@ -68,7 +64,7 @@ search:
footer: footer:
builtWith: builtWith:
other: "مبني باستخدام {{ .Generator }}" other: "مبني بستخدام {{ .Generator }}"
designedBy: designedBy:
other: "قالب {{ .Theme }} مصمم من {{ .DesignedBy }}" other: "قالب {{ .Theme }} مصمم من {{ .DesignedBy }}"

View File

@ -1,72 +0,0 @@
toggleMenu:
other: Паказаць/схаваць меню
darkMode:
other: Цёмны рэжым
list:
page:
one: "{{ .Count }} старонка"
few: "{{ .Count }} старонкі"
many: "{{ .Count }} старонак"
other: "{{ .Count }} старонкі"
section:
other: Раздзел
subsection:
one: Падраздзел
few: Падраздзелы
many: Падраздзелы
other: Падраздзелы
article:
back:
other: Назад
relatedContent:
other: Таксама рэкамендуем
lastUpdatedOn:
other: Абноўлена
tableOfContents:
other: Змест
readingTime:
other: "Час чытання: {{ .Count }} хв."
notFound:
title:
other: Не знойдзена
subtitle:
other: Запытваемая старонка не існуе
widget:
archives:
title:
other: Архівы
more:
other: Яшчэ
tagCloud:
title:
other: Тэгі
search:
title:
other: Пошук
placeholder:
other: Увядзіце нешта...
resultTitle:
other: "Знайдзена #PAGES_COUNT старонак (за #TIME_SECONDS с.)"
footer:
builtWith:
other: Створана пры дапамозе {{ .Generator }}
designedBy:
other: Тэма {{ .Theme }}, дызайн {{ .DesignedBy }}

View File

@ -1,73 +0,0 @@
toggleMenu:
other: Покажи Меню
darkMode:
other: Тъмен Режим
list:
page:
one: "{{ .Count }} страница"
other: "{{ .Count }} страници"
section:
other: Секция
subsection:
one: Подсекция
other: Подсекции
article:
back:
other: Назад
tableOfContents:
other: Съдържание
relatedContent:
other: Свързано Съдържание
lastUpdatedOn:
other: Последна промяна на
readingTime:
one: "{{ .Count }} minute read"
other: "{{ .Count }} minute read"
notFound:
title:
other: Не е намерено
subtitle:
other: Страницата която търсите не е открита
widget:
archives:
title:
other: Архиви
more:
other: Повече
tagCloud:
title:
other: Тагове
categoriesCloud:
title:
other: Категории
search:
title:
other: Търсене
placeholder:
other: Напишете нещо...
resultTitle:
other: "#PAGES_COUNT страници (#TIME_SECONDS секунди)"
footer:
builtWith:
other: Създадено с {{ .Generator }}
designedBy:
other: Тема {{ .Theme }} създадена от {{ .DesignedBy }}

View File

@ -1,73 +0,0 @@
toggleMenu:
other: টগল মেনু
darkMode:
other: ডার্ক মোড
list:
page:
one: "{{ .Count }} পাতা"
other: "{{ .Count }} পাতা"
section:
other: অনুচ্ছেদ
subsection:
one: উপ-অনুচ্ছেদ
other: উপ-অনুচ্ছেদ
article:
back:
other: পেছনে
tableOfContents:
other: সূচিপত্র
relatedContent:
other: সম্পর্কিত বিষয়বস্তু
lastUpdatedOn:
other: সর্বশেষ আপডেট করা হয়েছে
readingTime:
one: "{{ .Count }} মিনিটে পড়া যাবে"
other: "{{ .Count }} মিনিটে পড়া যাবে"
notFound:
title:
other: পাওয়া যায়নি
subtitle:
other: এই পাতাটি বিদ্যমান নেই
widget:
archives:
title:
other: আর্কাইভ
more:
other: আরও
tagCloud:
title:
other: ট্যাগ
categoriesCloud:
title:
other: বিভাগ
search:
title:
other: অনুসন্ধান
placeholder:
other: কিছু টাইপ করুন...
resultTitle:
other: "#PAGES_COUNT পাতা (#TIME_SECONDS সেকেন্ড)"
footer:
builtWith:
other: "{{ .Generator }} দিয়ে নির্মিত"
designedBy:
other: "থিম {{ .Theme }} ডিজাইন করেছেন {{ .DesignedBy }}"

View File

@ -1,73 +0,0 @@
toggleMenu:
other: Toggle Menu
darkMode:
other: Mode fosc
list:
page:
one: "{{ .Count }} pàgina"
other: "{{ .Count }} pàgines"
section:
other: Secció
subsection:
one: Subsecció
other: Subseccions
article:
back:
other: Tornar
tableOfContents:
other: Taula de contingut
relatedContent:
other: Continguts relacionats
lastUpdatedOn:
other: Última vegada actualitzat
readingTime:
one: "{{ .Count }} minut a llegir"
other: "{{ .Count }} minuts a llegir"
notFound:
title:
other: No Trobat
subtitle:
other: Aquesta pàgina no existeix
widget:
archives:
title:
other: Arxiu
more:
other: Més
tagCloud:
title:
other: Etiquetes
categoriesCloud:
title:
other: Categories
search:
title:
other: Cerca
placeholder:
other: Tecleja alguna cosa...
resultTitle:
other: "#PAGES_COUNT pàgines en (#TIME_SECONDS segons)"
footer:
builtWith:
other: Creat amb {{ .Generator }}
designedBy:
other: Tema {{ .Theme }} dissenyat per {{ .DesignedBy }}

View File

@ -1,73 +0,0 @@
toggleMenu:
other: Skrýt menu
darkMode:
other: Tmavý režim
list:
page:
one: "{{ .Count }} stránka"
other: "{{ .Count }} stránek"
section:
other: Kategorie
subsection:
one: Podkategorie
other: Podkategorie
article:
back:
other: Zpět
tableOfContents:
other: Obsah
relatedContent:
other: Související
lastUpdatedOn:
other: Naposledy aktualizováno
readingTime:
one: "{{ .Count }} minuta"
other: "{{ .Count }} minut"
notFound:
title:
other: Nenalezeno
subtitle:
other: Tato stránka neexistuje
widget:
archives:
title:
other: Archivy
more:
other: Více
tagCloud:
title:
other: Štítky
categoriesCloud:
title:
other: Kategorie
search:
title:
other: Hledat
placeholder:
other: Zadejte něco...
resultTitle:
other: "#PAGES_COUNT stránek (#TIME_SECONDS sekund)"
footer:
builtWith:
other: Vytvořeno pomocí {{ .Generator }}
designedBy:
other: Šablona {{ .Theme }} od {{ .DesignedBy }}

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Inhaltsverzeichnis other: Inhaltsverzeichnis
relatedContent: relatedContents:
other: Verwandte Inhalte other: Verwandte Inhalte
lastUpdatedOn: lastUpdatedOn:
@ -52,10 +52,6 @@ widget:
title: title:
other: Schlagwörter other: Schlagwörter
categoriesCloud:
title:
other: Kategorien
search: search:
title: title:
other: Suche other: Suche

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Πινακας περιεχομενων other: Πινακας περιεχομενων
relatedContent: relatedContents:
other: Σχετικο περιεχομενο other: Σχετικο περιεχομενο
lastUpdatedOn: lastUpdatedOn:

View File

@ -23,8 +23,8 @@ article:
tableOfContents: tableOfContents:
other: Table of contents other: Table of contents
relatedContent: relatedContents:
other: Related content other: Related contents
lastUpdatedOn: lastUpdatedOn:
other: Last updated on other: Last updated on

View File

@ -1,5 +1,5 @@
toggleMenu: toggleMenu:
other: Ocultar menú other: Toggle Menu
darkMode: darkMode:
other: Modo oscuro other: Modo oscuro
@ -23,15 +23,15 @@ article:
tableOfContents: tableOfContents:
other: Tabla de contenido other: Tabla de contenido
relatedContent: relatedContents:
other: Contenidos relacionados other: Contenidos relacionados
lastUpdatedOn: lastUpdatedOn:
other: Última actualización other: Última vez actualizado
readingTime: readingTime:
one: "Tiempo de lectura {{ .Count }} minuto" one: "{{ .Count }} minuto a leer"
other: "Tiempo de lectura {{ .Count }} minutos" other: "{{ .Count }} minutos a leer"
notFound: notFound:
title: title:
@ -51,16 +51,13 @@ widget:
tagCloud: tagCloud:
title: title:
other: Etiquetas other: Etiquetas
categoriesCloud:
title:
other: Categorías
search: search:
title: title:
other: Búsqueda other: Búsqueda
placeholder: placeholder:
other: Escribe algo... other: Teclea algo...
resultTitle: resultTitle:
other: "#PAGES_COUNT páginas en (#TIME_SECONDS segundos)" other: "#PAGES_COUNT páginas en (#TIME_SECONDS segundos)"

View File

@ -1,73 +0,0 @@
toggleMenu:
other: منو
darkMode:
other: حالت شب
list:
page:
one: "{{ .Count }} صفحه"
other: "{{ .Count }} صفحه"
section:
other: بخش
subsection:
one: زیربخش
other: زیربخش
article:
back:
other: قبلی
tableOfContents:
other: فهرست
relatedContent:
other: مطالب مرتبط
lastUpdatedOn:
other: آخرین بروزرسانی در
readingTime:
one: "مطالعه در {{ .Count }} دقیقه"
other: "مطالعه در {{ .Count }} دقیقه"
notFound:
title:
other: یافت نشد
subtitle:
other: این صحه وجود ندارد
widget:
archives:
title:
other: آرشیو
more:
other: بیشتر
tagCloud:
title:
other: تگ ها
categoriesCloud:
title:
other: دسته بندی
search:
title:
other: جستجو
placeholder:
other: تایپ کنید ...
resultTitle:
other: "#PAGES_COUNT صفحه (#TIME_SECONDS ثانیه)"
footer:
builtWith:
other: قدرت گرفته از {{ .Generator }}
designedBy:
other: قالب {{ .Theme }} ساخته شده توسط {{ .DesignedBy }}

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Table des matières other: Table des matières
relatedContent: relatedContents:
other: Contenus liés other: Contenus liés
lastUpdatedOn: lastUpdatedOn:
@ -50,9 +50,6 @@ widget:
tagCloud: tagCloud:
title: title:
other: Mots clés other: Mots clés
categoriesCloud:
title:
other: Catégories
search: search:
title: title:

View File

@ -1,73 +0,0 @@
toggleMenu:
other: मेनू टॉगल करें
darkMode:
other: डार्क मोड
list:
page:
one: "{{ .Count }} पेज"
other: "{{ .Count }} पेज"
section:
other: अनुभाग
subsection:
one: उपधारा
other: उपखंड
article:
back:
other: पीछे
tableOfContents:
other: विषयसूची
relatedContent:
other: संबंधित सामग्री
lastUpdatedOn:
other: अंतिम बार अपडेट किया गया
readingTime:
one: "{{ .Count }} मिनट पढ़ें"
other: "{{ .Count }} मिनट पढ़ें"
notFound:
title:
other: 404 नहीं मिला।
subtitle:
other: यह पृष्ठ मौजूद नहीं है।
widget:
archives:
title:
other: अभिलेखागार
more:
other: अधिक
tagCloud:
title:
other: टैग
categoriesCloud:
title:
other: श्रेणियाँ
search:
title:
other: खोज
placeholder:
other: कुछ लिखें...
resultTitle:
other: "#PAGES_COUNT पेज (#TIME_SECONDS सेकंड)"
footer:
builtWith:
other: निर्मित {{ .Generator }} के साथ
designedBy:
other: थीम {{ .Theme }} द्वारा डिज़ाइन किया गया {{ .DesignedBy }}

View File

@ -1,73 +0,0 @@
toggleMenu:
other: Menü Kapcsolása
darkMode:
other: Sötét Mód
list:
page:
one: "{{ .Count }} oldal"
other: "{{ .Count }} oldalak"
section:
other: Szekció
subsection:
one: Alszekció
other: Alszekciók
article:
back:
other: Vissza
tableOfContents:
other: Tartalomjegyzék
relatedContent:
other: Kapcsolódó tartalom
lastUpdatedOn:
other: Utolsó frissítés időpontja
readingTime:
one: "{{ .Count }} percnyi olvasmány"
other: "{{ .Count }} percnyi olvasmány"
notFound:
title:
other: Nem található
subtitle:
other: Ez az oldal nem létezik
widget:
archives:
title:
other: Archívum
more:
other: Több
tagCloud:
title:
other: Cimkék
categoriesCloud:
title:
other: Kategóriák
search:
title:
other: Keresés
placeholder:
other: Írj valamit...
resultTitle:
other: "#PAGES_COUNT oldal (#TIME_SECONDS másodperc alatt)"
footer:
builtWith:
other: "{{ .Generator }} használatával készült"
designedBy:
other: A {{ .Theme }} dizájnt {{ .DesignedBy }} tervezte

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Daftar Isi other: Daftar Isi
relatedContent: relatedContents:
other: Konten terkait other: Konten terkait
lastUpdatedOn: lastUpdatedOn:
@ -51,10 +51,6 @@ widget:
title: title:
other: Tag other: Tag
categoriesCloud:
title:
other: Kategori
search: search:
title: title:
other: Cari other: Cari

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Indice other: Indice
relatedContent: relatedContents:
other: Contenuti correlati other: Contenuti correlati
lastUpdatedOn: lastUpdatedOn:
@ -51,10 +51,6 @@ widget:
title: title:
other: Tags other: Tags
categoriesCloud:
title:
other: Categorie
search: search:
title: title:
other: Cerca other: Cerca

View File

@ -4,16 +4,6 @@ toggleMenu:
darkMode: darkMode:
other: ダークモード other: ダークモード
list:
page:
other: "{{ .Count }} ページ目"
section:
other: セクション
subsection:
other: サブセクション
article: article:
back: back:
other: 前のページ other: 前のページ
@ -21,7 +11,7 @@ article:
tableOfContents: tableOfContents:
other: 目次 other: 目次
relatedContent: relatedContents:
other: 関連するコンテンツ other: 関連するコンテンツ
lastUpdatedOn: lastUpdatedOn:
@ -48,10 +38,6 @@ widget:
title: title:
other: タグ other: タグ
categoriesCloud:
title:
other: カテゴリ
search: search:
title: title:
other: 検索 other: 検索
@ -61,10 +47,3 @@ search:
resultTitle: resultTitle:
other: "#PAGES_COUNT 件 #TIME_SECONDS 秒)" other: "#PAGES_COUNT 件 #TIME_SECONDS 秒)"
footer:
builtWith:
other: "{{ .Generator }} で構築されています。"
designedBy:
other: テーマ {{ .Theme }} は {{ .DesignedBy }} によって設計されています。

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: 목차 other: 목차
relatedContent: relatedContents:
other: 관련 글 other: 관련 글
lastUpdatedOn: lastUpdatedOn:
@ -47,10 +47,6 @@ widget:
more: more:
other: 더보기 other: 더보기
categoriesCloud:
title:
other: 카테고리
tagCloud: tagCloud:
title: title:
other: 태그 other: 태그

View File

@ -17,12 +17,10 @@ list:
other: Subsecties other: Subsecties
article: article:
relatedContent: relatedContents:
other: Gerelateerde inhoud other: Gerelateerde inhoud
lastUpdatedOn: lastUpdatedOn:
other: Laatst bijgewerkt op other: Laatst bijgewerkt op
readingTime:
other: "{{ .Count }} leestijd"
notFound: notFound:
title: title:
@ -40,10 +38,6 @@ widget:
title: title:
other: Tags other: Tags
categoriesCloud:
title:
other: Categorie
search: search:
title: title:
other: Zoeken other: Zoeken

View File

@ -1,72 +0,0 @@
toggleMenu:
other: Alternar menú
darkMode:
other: Mòde fosc
list:
page:
one: "{{ .Count }} pagina"
other: "{{ .Count }} paginas"
section:
other: Seccion
subsection:
one: Josseccion
other: Josseccions
article:
back:
other: Tornar
tableOfContents:
other: Taula de contengut
relatedContent:
other: Contenguts relacionats
lastUpdatedOn:
other: Darrièra actualizacion
readingTime:
one: "{{ .Count }} minuta de lectura"
other: "{{ .Count }} minutas de lectura"
notFound:
title:
other: Non trobat
subtitle:
other: Aquesta pagina existís pas
widget:
archives:
title:
other: Archiu
more:
other: Mai
tagCloud:
title:
other: Etiquetas
categoriesCloud:
title:
other: Categorias
search:
title:
other: Cercar
placeholder:
other: Picatz quicòm...
resultTitle:
other: "#PAGES_COUNT paginas dins (#TIME_SECONDS segons)"
footer:
builtWith:
other: Creat amb {{ .Generator }}
designedBy:
other: Tàma {{ .Theme }} concebut per {{ .DesignedBy }}

View File

@ -7,8 +7,6 @@ darkMode:
list: list:
page: page:
one: "{{ .Count }} strona" one: "{{ .Count }} strona"
few: "{{ .Count }} strony"
many: "{{ .Count }} stron"
other: "{{ .Count }} stron" other: "{{ .Count }} stron"
section: section:
@ -16,9 +14,7 @@ list:
subsection: subsection:
one: Podsekcja one: Podsekcja
few: Podsekcje other: Podsekcje
many: Podsekcji
other: Podsekcji
article: article:
back: back:
@ -27,16 +23,14 @@ article:
tableOfContents: tableOfContents:
other: Spis treści other: Spis treści
relatedContent: relatedContents:
other: Powiązane artykuły other: Powiązane artykuły
lastUpdatedOn: lastUpdatedOn:
other: Ostatnio zaktualizowany other: Ostatnio zaktualizowany
readingTime: readingTime:
one: "Przeczytasz w {{ .Count }} minutę" one: "Przeczytasz w {{ .Count }} minutę"
few: "Przeczytasz w {{ .Count }} minuty"
many: "Przeczytasz w {{ .Count }} minut"
other: "Przeczytasz w {{ .Count }} minut" other: "Przeczytasz w {{ .Count }} minut"
notFound: notFound:
@ -57,10 +51,6 @@ widget:
title: title:
other: Tagi other: Tagi
categoriesCloud:
title:
other: Kategorie
search: search:
title: title:
other: Szukaj other: Szukaj
@ -69,9 +59,6 @@ search:
other: Wpisz coś... other: Wpisz coś...
resultTitle: resultTitle:
one: "#PAGES_COUNT strona (#TIME_SECONDS sekund)"
few: "#PAGES_COUNT strony (#TIME_SECONDS sekund)"
many: "#PAGES_COUNT stron (#TIME_SECONDS sekund)"
other: "#PAGES_COUNT stron (#TIME_SECONDS sekund)" other: "#PAGES_COUNT stron (#TIME_SECONDS sekund)"
footer: footer:

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: Índice other: Índice
relatedContent: relatedContents:
other: Conteúdo relacionado other: Conteúdo relacionado
lastUpdatedOn: lastUpdatedOn:
@ -48,9 +48,6 @@ widget:
tagCloud: tagCloud:
title: title:
other: Tags other: Tags
categoriesCloud:
title:
other: Categorias
search: search:
title: title:

View File

@ -1,67 +0,0 @@
toggleMenu:
other: Alternar Menu
darkMode:
other: Modo Escuro
list:
page:
one: "{{ .Count }} página"
other: "{{ .Count }} páginas"
section:
other: Secção
subsection:
one: Subsecção
other: Subsecções
article:
back:
other: Voltar
tableOfContents:
other: Índice
relatedContent:
other: Conteúdo relacionado
lastUpdatedOn:
other: Última atualização a
readingTime:
one: "{{ .Count }} minuto de leitura"
other: "{{ .Count }} minutos de leitura"
notFound:
title:
other: Não Encontrado
subtitle:
other: Esta página não existe.
widget:
archives:
title:
other: Arquivos
more:
other: Mais
tagCloud:
title:
other: Tags
categoriesCloud:
title:
other: Categorias
search:
title:
other: Pesquisa
placeholder:
other: Escreva algo...
resultTitle:
other: "#PAGES_COUNT páginas (#TIME_SECONDS segundos)"
footer:
builtWith:
other: Criado com {{ .Generator }}
designedBy:
other: Tema {{ .Theme }} desenvolvido por {{ .DesignedBy }}

View File

@ -23,7 +23,7 @@ list:
article: article:
back: back:
other: Назад other: Назад
relatedContent: relatedContents:
other: Также рекомендуем other: Также рекомендуем
lastUpdatedOn: lastUpdatedOn:
other: Обновлено other: Обновлено

View File

@ -1,71 +0,0 @@
toggleMenu:
other: Skryť menu
darkMode:
other: Tmavý režim
list:
page:
one: "{{ .Count }} stránka"
other: "{{ .Count }} stránok"
section:
other: Kategórie
subsection:
one: Podkategória
other: Podkategórie
article:
back:
other: Späť
tableOfContents:
other: Obsah
relatedContent:
other: Súvisiace
lastUpdatedOn:
other: Naposledy aktualizované
readingTime:
one: "{{ .Count }} minúta"
other: "{{ .Count }} minút"
notFound:
title:
other: Nenájdené
subtitle:
other: Tato stránka neexistuje
widget:
archives:
title:
other: Archívy
more:
other: Viac
tagCloud:
title:
other: Štítky
categoriesCloud:
title:
other: Kategórie
search:
title:
other: Hladať
placeholder:
other: Zadajte niečo...
resultTitle:
other: "#PAGES_COUNT stránok (#TIME_SECONDS sekúnd)"
footer:
builtWith:
other: Vytvorené pomocou {{ .Generator }}
designedBy:
other: Šablóna {{ .Theme }} od {{ .DesignedBy }}

View File

@ -23,7 +23,7 @@ article:
tableOfContents: tableOfContents:
other: สารบัญ other: สารบัญ
relatedContent: relatedContents:
other: เนื้อหาคล้ายคลึงกัน other: เนื้อหาคล้ายคลึงกัน
lastUpdatedOn: lastUpdatedOn:

View File

@ -17,7 +17,7 @@ list:
other: Alt bölümler other: Alt bölümler
article: article:
relatedContent: relatedContents:
other: Alakalı içerikler other: Alakalı içerikler
lastUpdatedOn: lastUpdatedOn:
other: Son güncelleme other: Son güncelleme

View File

@ -24,7 +24,7 @@ article:
tableOfContents: tableOfContents:
other: Зміст other: Зміст
relatedContent: relatedContents:
other: Схожі матеріали other: Схожі матеріали
lastUpdatedOn: lastUpdatedOn:

View File

@ -1,74 +0,0 @@
toggleMenu:
other: Hiển thị Menu
darkMode:
other: Chế độ nền tối
list:
page:
one: "{{ .Count }} trang"
other: "{{ .Count }} trang"
section:
other: Section
subsection:
one: Subsection
other: Subsections
article:
back:
other: Trở lại
tableOfContents:
other: Mục lục
relatedContent:
other: Bài viết liên quan
lastUpdatedOn:
other: Cập nhật lần cuối
readingTime:
one: "{{ .Count }} phút đọc"
other: "{{ .Count }} phút đọc"
notFound:
title:
other: Không tìm thấy
subtitle:
other: Trang này không tồn tại
widget:
archives:
title:
other: Lưu trữ
more:
other: Còn nữa
tagCloud:
title:
other: Nhãn dán
categoriesCloud:
title:
other: Chuỗi bài
search:
title:
other: Tìm kiếm
placeholder:
other: Nhập từ khoá ...
resultTitle:
other: "#PAGES_COUNT trang (#TIME_SECONDS giây)"
footer:
builtWith:
other: Built with {{ .Generator }}
designedBy:
other: Theme {{ .Theme }} thiết kế bởi {{ .DesignedBy }}

View File

@ -4,13 +4,6 @@ toggleMenu:
darkMode: darkMode:
other: 暗色模式 other: 暗色模式
list:
page: "{{ .Count }} 个页面"
section: 章节
subsection: 子章节
article: article:
back: back:
other: 返回 other: 返回
@ -18,7 +11,7 @@ article:
tableOfContents: tableOfContents:
other: 目录 other: 目录
relatedContent: relatedContents:
other: 相关文章 other: 相关文章
lastUpdatedOn: lastUpdatedOn:
@ -45,10 +38,6 @@ widget:
title: title:
other: 标签云 other: 标签云
categoriesCloud:
title:
other: 分类
search: search:
title: title:
other: 搜索 other: 搜索
@ -58,10 +47,3 @@ search:
resultTitle: resultTitle:
other: "#PAGES_COUNT 个结果 (用时 #TIME_SECONDS 秒)" other: "#PAGES_COUNT 个结果 (用时 #TIME_SECONDS 秒)"
footer:
builtWith:
other: 使用 {{ .Generator }} 构建
designedBy:
other: 主题 {{ .Theme }} 由 {{ .DesignedBy }} 设计

View File

@ -4,18 +4,6 @@ toggleMenu:
darkMode: darkMode:
other: 夜晚模式 other: 夜晚模式
list:
page:
one: "第 {{ .Count }} 頁"
other: "第 {{ .Count }} 頁"
section:
other: 段落
subsection:
one: 小節
other: 小節
article: article:
back: back:
other: 返回 other: 返回
@ -23,20 +11,18 @@ article:
tableOfContents: tableOfContents:
other: 目錄 other: 目錄
relatedContent: relatedContents:
other: 相關文章 other: 相關文章
lastUpdatedOn: lastUpdatedOn:
other: 最後更新 other: 最後更新
readingTime: readingTime:
one: "閱讀時間: {{ .Count }} 分鐘"
other: "閱讀時間: {{ .Count }} 分鐘" other: "閱讀時間: {{ .Count }} 分鐘"
notFound: notFound:
title: title:
other: 404 錯誤 other: 404 錯誤
subtitle: subtitle:
other: 頁面不存在 other: 頁面不存在
@ -51,9 +37,6 @@ widget:
tagCloud: tagCloud:
title: title:
other: 標籤雲 other: 標籤雲
categoriesCloud:
title:
other: 分類
search: search:
title: title:
@ -64,10 +47,3 @@ search:
resultTitle: resultTitle:
other: "#PAGES_COUNT 個結果 (用時 #TIME_SECONDS 秒)" other: "#PAGES_COUNT 個結果 (用時 #TIME_SECONDS 秒)"
footer:
builtWith:
other: 使用 {{ .Generator }} 建立
designedBy:
other: 主題 {{ .Theme }} 由 {{ .DesignedBy }} 設計

View File

@ -1,73 +0,0 @@
toggleMenu:
other: 切換選單
darkMode:
other: 深色模式
list:
page:
one: "第 {{ .Count }} 頁"
other: "第 {{ .Count }} 頁"
section:
other: Section
subsection:
one: Subsection
other: Subsections
article:
back:
other: 返回
tableOfContents:
other: 目錄
relatedContent:
other: 相關內容
lastUpdatedOn:
other: 上次改過於
readingTime:
one: "需要 {{ .Count }} 分鐘閱讀"
other: "需要 {{ .Count }} 分鐘閱讀"
notFound:
title:
other: Not Found
subtitle:
other: 頁面不存在
widget:
archives:
title:
other: Archives
more:
other: 更多
tagCloud:
title:
other: Tags
categoriesCloud:
title:
other: Categories
search:
title:
other: 搜尋
placeholder:
other: Type 關鍵字...
resultTitle:
other: "#PAGES_COUNT pages (#TIME_SECONDS seconds)"
footer:
builtWith:
other: Built with {{ .Generator }}
designedBy:
other: 主題 {{ .Theme }} 由 {{ .DesignedBy }} 設計

View File

@ -3,43 +3,5 @@
<h1 class="article-title">{{ T "notFound.title" }}</h1> <h1 class="article-title">{{ T "notFound.title" }}</h1>
<h2 class="article-subtitle">{{ T "notFound.subtitle" }}</h2> <h2 class="article-subtitle">{{ T "notFound.subtitle" }}</h2>
</div> </div>
{{- $query := first 1 (where .Site.Pages "Layout" "==" "search") -}}
{{- $searchPage := index $query 0 -}}
{{- with $searchPage -}}
<form action="{{ $searchPage.RelPermalink }}" class="search-form widget" {{ with .OutputFormats.Get "json" -}}data-json="{{ .Permalink }}" {{- end }}>
<p>
<label>{{ T "search.title" }}</label>
<input id="searchInput" name="keyword" required placeholder="{{ T `search.placeholder` }}" />
<button title="{{ T `search.title` }}">
{{ partial "helper/icon" "search" }}
</button>
</p>
</form>
<div class="search-result">
<h3 class="search-result--title section-title"></h3>
<div class="search-result--list article-list--compact"></div>
</div>
<script>
window.searchResultTitleTemplate = "{{ T `search.resultTitle` }}"
</script>
{{- $opts := dict "minify" hugo.IsProduction "JSXFactory" "createElement" -}}
{{- $searchScript := resources.Get "ts/search.tsx" | js.Build $opts -}}
<script type="text/javascript" src="{{ $searchScript.RelPermalink }}" defer></script>
<script>
const wrongUrl = new URL(window.location.href);
/// Get the search keyword from the wrong URL by removing all slashes and dashes
const searchKeyword = wrongUrl.pathname.split(/[/|-]/).join(' ').trim();
document.getElementById('searchInput').setAttribute('value', searchKeyword);
</script>
{{- end -}}
{{ partialCached "footer/footer" . }} {{ partialCached "footer/footer" . }}
{{ end }} {{ end }}

View File

@ -1,6 +0,0 @@
<h{{ .Level }} id="{{ .Anchor }}">
{{- if site.Params.Article.HeadingAnchor -}}
<a href="#{{ .Anchor }}" class="header-anchor"></a>
{{- end -}}
{{ .Text | safeHTML }}
</h{{ .Level }}>

View File

@ -6,22 +6,15 @@
</head> </head>
<body class="{{ block `body-class` . }}{{ end }}"> <body class="{{ block `body-class` . }}{{ end }}">
{{- partial "head/colorScheme" . -}} {{- partial "head/colorScheme" . -}}
{{- $hasWidget := default (gt (len .Site.Params.widgets.homepage) 0) (.Scratch.Get "hasWidget") -}}
{{/* The container is wider when there's any activated widget */}}
{{- $hasWidget := false -}}
{{- range .Site.Params.widgets -}}
{{- if gt (len .) 0 -}}
{{- $hasWidget = true -}}
{{- end -}}
{{- end -}}
<div class="container main-container flex on-phone--column {{ if $hasWidget }}extended{{ else }}compact{{ end }}"> <div class="container main-container flex on-phone--column {{ if $hasWidget }}extended{{ else }}compact{{ end }}">
{{- block "left-sidebar" . -}} {{- block "left-sidebar" . -}}
{{ partial "sidebar/left.html" . }} {{ partial "sidebar/left.html" . }}
{{- end -}} {{- end -}}
{{- block "right-sidebar" . -}}{{ end }}
<main class="main full-width"> <main class="main full-width">
{{- block "main" . }}{{- end }} {{- block "main" . }}{{- end }}
</main> </main>
{{- block "right-sidebar" . -}}{{ end }}
</div> </div>
{{ partial "footer/include.html" . }} {{ partial "footer/include.html" . }}
</body> </body>

View File

@ -18,11 +18,11 @@
<link>{{ .Permalink }}</link> <link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description> <description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }} <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Params.Author.email }} <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Params.Author.email }} <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }} <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }} <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }} <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{- with .OutputFormats.Get "RSS" -}} {{- with .OutputFormats.Get "RSS" -}}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }} {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{- end -}} {{- end -}}
@ -35,7 +35,7 @@
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<link>{{ .Permalink }}</link> <link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Params.Author.email }}<author>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</author>{{end}} {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid> <guid>{{ .Permalink }}</guid>
<description> <description>
{{- $image := partial "helper/image" (dict "Context" . "Type" "rss") -}} {{- $image := partial "helper/image" (dict "Context" . "Type" "rss") -}}

View File

@ -30,7 +30,7 @@
{{ partial "article/components/links" . }} {{ partial "article/components/links" . }}
{{ end }} {{ end }}
{{ partial "article/components/related-content" . }} {{ partial "article/components/related-contents" . }}
{{ if not (eq .Params.comments false) }} {{ if not (eq .Params.comments false) }}
{{ partial "comments/include" . }} {{ partial "comments/include" . }}

View File

@ -1,11 +1,11 @@
{{ define "body-class" }}template-search{{ end }} {{ define "body-class" }}template-search{{ end }}
{{ define "head" }} {{ define "head" }}
{{- with .OutputFormats.Get "json" -}} {{- with .OutputFormats.Get "json" -}}
<link rel="preload" href="{{ .RelPermalink }}" as="fetch" crossorigin="anonymous"> <link rel="preload" href="{{ .Permalink }}" as="fetch" crossorigin="anonymous">
{{- end -}} {{- end -}}
{{ end }} {{ end }}
{{ define "main" }} {{ define "main" }}
<form action="{{ .RelPermalink }}" class="search-form"{{ with .OutputFormats.Get "json" -}} data-json="{{ .RelPermalink }}"{{- end }}> <form action="{{ .Permalink }}" class="search-form"{{ with .OutputFormats.Get "json" -}} data-json="{{ .Permalink }}"{{- end }}>
<p> <p>
<label>{{ T "search.title" }}</label> <label>{{ T "search.title" }}</label>
<input name="keyword" placeholder="{{ T `search.placeholder` }}" /> <input name="keyword" placeholder="{{ T `search.placeholder` }}" />

View File

@ -10,7 +10,7 @@
{{- $Width := $imageRaw.Width -}} {{- $Width := $imageRaw.Width -}}
{{- $Height := $imageRaw.Height -}} {{- $Height := $imageRaw.Height -}}
{{- if .context.Site.Params.imageProcessing.cover.enabled -}} {{- if (default true .Page.Site.Params.imageProcessing.cover.enabled) -}}
{{- $thumbnail := $imageRaw.Fill .size -}} {{- $thumbnail := $imageRaw.Fill .size -}}
{{- $Permalink = $thumbnail.RelPermalink -}} {{- $Permalink = $thumbnail.RelPermalink -}}
{{- $Width = $thumbnail.Width -}} {{- $Width = $thumbnail.Width -}}
@ -36,4 +36,4 @@
</h2> </h2>
</div> </div>
</a> </a>
</article> </article>

View File

@ -23,21 +23,18 @@
{{ end }} {{ end }}
</div> </div>
{{ $showReadingTime := .Params.readingTime | default (.Site.Params.article.readingTime) }} {{ if or (not .Date.IsZero) (.Site.Params.article.readingTime) }}
{{ $showDate := not .Date.IsZero }}
{{ $showFooter := or $showDate $showReadingTime }}
{{ if $showFooter }}
<footer class="article-time"> <footer class="article-time">
{{ if $showDate }} {{ if not .Date.IsZero }}
<div> <div>
{{ partial "helper/icon" "date" }} {{ partial "helper/icon" "date" }}
<time class="article-time--published"> <time class="article-time--published">
{{- .Date | time.Format (or .Site.Params.dateFormat.published "Jan 02, 2006") -}} {{- .Date.Format (or .Site.Params.dateFormat.published "Jan 02, 2006") -}}
</time> </time>
</div> </div>
{{ end }} {{ end }}
{{ if $showReadingTime }} {{ if .Site.Params.article.readingTime }}
<div> <div>
{{ partial "helper/icon" "clock" }} {{ partial "helper/icon" "clock" }}
<time class="article-time--reading"> <time class="article-time--reading">
@ -58,4 +55,4 @@
</div> </div>
</footer> </footer>
{{ end }} {{ end }}
</div> </div>

View File

@ -12,7 +12,7 @@
<section class="article-lastmod"> <section class="article-lastmod">
{{ partial "helper/icon" "clock" }} {{ partial "helper/icon" "clock" }}
<span> <span>
{{ T "article.lastUpdatedOn" }} {{ .Lastmod | time.Format ( or .Site.Params.dateFormat.lastUpdated "Jan 02, 2006 15:04 MST" ) }} {{ T "article.lastUpdatedOn" }} {{ .Lastmod.Format ( or .Site.Params.dateFormat.lastUpdated "Jan 02, 2006 15:04 MST" ) }}
</span> </span>
</section> </section>
{{- end -}} {{- end -}}

View File

@ -16,12 +16,8 @@
</div> </div>
{{ with $link.image }} {{ with $link.image }}
{{ $permalink := . }}
{{ with ($.Resources.GetMatch (printf "%s" (. | safeURL))) }}
{{ $permalink = .RelPermalink }}
{{ end }}
<div class="article-image"> <div class="article-image">
<img src="{{ $permalink }}" loading="lazy"> <img src="{{ . }}" loading="lazy">
</div> </div>
{{ end }} {{ end }}
</a> </a>

View File

@ -1,14 +1,12 @@
{{- partial "helper/external" (dict "Context" . "Namespace" "KaTeX") -}} {{- partial "helper/external" (dict "Context" . "Namespace" "KaTeX") -}}
<script> <script>
window.addEventListener("DOMContentLoaded", () => { window.addEventListener("DOMContentLoaded", () => {
const mainArticleElement = document.querySelector(".main-article"); renderMathInElement(document.querySelector(`.article-content`), {
renderMathInElement(mainArticleElement, {
delimiters: [ delimiters: [
{ left: "$$", right: "$$", display: true }, { left: "$$", right: "$$", display: true },
{ left: "$", right: "$", display: false }, { left: "$", right: "$", display: false },
{ left: "\\(", right: "\\)", display: false }, { left: "\\(", right: "\\)", display: false },
{ left: "\\[", right: "\\]", display: true } { left: "\\[", right: "\\]", display: true }
], ]
ignoredClasses: ["gist"]
});}) });})
</script> </script>

View File

@ -1,8 +1,8 @@
{{ $related := (where (.Site.RegularPages.Related .) "Params.hidden" "!=" true) | first 5 }} {{ $related := (where (.Site.RegularPages.Related .) "Params.hidden" "!=" true) | first 5 }}
{{ with $related }} {{ with $related }}
<aside class="related-content--wrapper"> <aside class="related-contents--wrapper">
<h2 class="section-title">{{ T "article.relatedContent" }}</h2> <h2 class="section-title">{{ T "article.relatedContents" }}</h2>
<div class="related-content"> <div class="related-contents">
<div class="flex article-list--tile"> <div class="flex article-list--tile">
{{ range . }} {{ range . }}
{{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "articleList") }} {{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "articleList") }}

View File

@ -1,46 +0,0 @@
<script
src="https://beaudar.lipk.org/client.js"
repo="{{ .Site.Params.comments.beaudar.repo }}"
issue-term="{{ .Site.Params.comments.beaudar.issueTerm }}"
{{ with .Site.Params.comments.beaudar.label }}
label="{{ . }}"
{{ end }}
theme="{{ .Site.Params.comments.beaudar.theme }}"
crossorigin="anonymous"
async
></script>
<style>
.beaudar {
max-width: unset;
}
</style>
<script>
let beaudarLoaded = false;
function setBeaudarTheme(theme) {
let beaudar = document.querySelector(".beaudar iframe");
if (beaudar) {
beaudar.contentWindow.postMessage(
{
type: "set-theme",
theme: `github-${theme}`,
},
"https://beaudar.lipk.org"
);
}
}
addEventListener("message", (event) => {
if (event.origin !== "https://beaudar.lipk.org") return;
/// Called when Beaudar is ready
beaudarLoaded = true;
setBeaudarTheme(document.documentElement.dataset.scheme);
});
window.addEventListener("onColorSchemeChange", (e) => {
if (!beaudarLoaded) return;
setBeaudarTheme(e.detail);
});
</script>

View File

@ -13,7 +13,7 @@
<script> <script>
window.addEventListener('onColorSchemeChange', (e) => { window.addEventListener('onColorSchemeChange', (e) => {
if (typeof DISQUS == 'object') { if (DISQUS) {
DISQUS.reset({ DISQUS.reset({
reload: true reload: true
}); });

View File

@ -2,7 +2,7 @@
{{- $disqusjs := .Site.Params.Comments.disqusjs -}} {{- $disqusjs := .Site.Params.Comments.disqusjs -}}
{{- if and (not $pc.Disable) (and $disqusjs.Shortname $disqusjs.ApiKey) -}} {{- if and (not $pc.Disable) (and $disqusjs.Shortname $disqusjs.ApiKey) -}}
{{- $style := resources.Get "scss/partials/comments/disqusjs.scss" | toCSS | minify -}} {{- $style := resources.Get "scss/partials/comments/disqusjs.scss" | resources.ToCSS | minify -}}
<link rel="stylesheet" href="{{ $style.RelPermalink }}"> <link rel="stylesheet" href="{{ $style.RelPermalink }}">
<div class="disqus-container"> <div class="disqus-container">

View File

@ -6,13 +6,10 @@
data-category="{{- .category -}}" data-category="{{- .category -}}"
data-category-id="{{- .categoryID -}}" data-category-id="{{- .categoryID -}}"
data-mapping="{{- default `title` .mapping -}}" data-mapping="{{- default `title` .mapping -}}"
data-strict="{{- default 0 .strict -}}"
data-reactions-enabled="{{- default 1 .reactionsEnabled -}}" data-reactions-enabled="{{- default 1 .reactionsEnabled -}}"
data-emit-metadata="{{- default 0 .emitMetadata -}}" data-emit-metadata="{{- default 0 .emitMetadata -}}"
data-input-position="{{- default `top` .inputPosition -}}"
data-theme="{{- default `light` .lightTheme -}}" data-theme="{{- default `light` .lightTheme -}}"
data-lang="{{- default `en` .lang -}}" data-lang="{{- default `en` .lang -}}"
data-loading="{{- .loading -}}"
crossorigin="anonymous" crossorigin="anonymous"
async async
></script> ></script>

View File

@ -15,7 +15,6 @@
admin: ["{{- .admin -}}"], admin: ["{{- .admin -}}"],
distractionFreeMode: false, // Facebook-like distraction free mode distractionFreeMode: false, // Facebook-like distraction free mode
id: md5(location.pathname), // Max Location.pathname Legth:75 https://github.com/gitalk/gitalk/issues/102 id: md5(location.pathname), // Max Location.pathname Legth:75 https://github.com/gitalk/gitalk/issues/102
proxy: {{- .proxy -}},
}); });
(function () { (function () {
if ( if (

View File

@ -2,10 +2,10 @@
<div id="remark42"></div> <div id="remark42"></div>
<script> <script>
var remark_config = { var remark_config = {
host: '{{ .host }}', host: "{{ .host }}",
site_id: '{{ .site }}', site_id: '{{ .site }}',
components: ['embed'], components: ['embed'],
url: '{{ $.Permalink }}', url: "{{ $.Permalink }}",
max_shown_comments: {{ default 15 .max_shown_comments }}, max_shown_comments: {{ default 15 .max_shown_comments }},
theme: document.documentElement.dataset.scheme, theme: document.documentElement.dataset.scheme,
page_title: '{{ $.Title }}', page_title: '{{ $.Title }}',
@ -13,14 +13,14 @@
show_email_subscription: {{ default true .show_email_subscription }} show_email_subscription: {{ default true .show_email_subscription }}
}; };
!function(e, n) { (function (c) {
for (var o = 0; o < e.length; o++) { for (var i = 0; i < c.length; i++) {
var r = n.createElement('script'), var d = document, s = d.createElement('script');
c = '.js', s.src = remark_config.host + '/web/' + c[i] + '.js';
d = n.head || n.body; s.defer = true;
'noModule' in r ? (r.type = 'module', c = '.mjs') : r.async = !0, r.defer = !0, r.src = remark_config.host + '/web/' + e[o] + c, d.appendChild(r) (d.head || d.body).appendChild(s);
} }
}(remark_config.components || ['embed'], document); })(remark_config.components || ['embed']);
window.addEventListener('onColorSchemeChange', (e) => { window.addEventListener('onColorSchemeChange', (e) => {
window.REMARK42.changeTheme(e.detail); window.REMARK42.changeTheme(e.detail);

View File

@ -1,4 +1,4 @@
<script src="//cdn.jsdelivr.net/npm/twikoo@1.6.39/dist/twikoo.all.min.js"></script> <script src="//cdn.jsdelivr.net/npm/twikoo@1.4.18/dist/twikoo.all.min.js"></script>
<div id="tcomment"></div> <div id="tcomment"></div>
<style> <style>
.twikoo { .twikoo {
@ -13,9 +13,7 @@
} }
.twikoo .el-input-group__prepend, .twikoo .el-input-group__prepend,
.twikoo .tk-action-icon, .twikoo .tk-action-icon,
.twikoo .tk-submit-action-icon,
.twikoo .tk-time, .twikoo .tk-time,
.twikoo .tk-comments-no,
.twikoo .tk-comments-count { .twikoo .tk-comments-count {
color: var(--twikoo-body-text-color); color: var(--twikoo-body-text-color);
} }
@ -30,13 +28,6 @@
.twikoo .el-button{ .twikoo .el-button{
color: var(--twikoo-body-text-color)!important; color: var(--twikoo-body-text-color)!important;
} }
.twikoo .el-input__count {
color: var(--twikoo-body-text-color) !important;
}
.OwO .OwO-body {
background-color: var(--body-background) !important;
color: var(--body-text-color) !important;
}
</style> </style>
{{- with .Site.Params.comments.twikoo -}} {{- with .Site.Params.comments.twikoo -}}

View File

@ -16,8 +16,6 @@
</style> </style>
<script> <script>
let utterancesLoaded = false;
function setUtterancesTheme(theme) { function setUtterancesTheme(theme) {
let utterances = document.querySelector('.utterances iframe'); let utterances = document.querySelector('.utterances iframe');
if (utterances) { if (utterances) {
@ -33,14 +31,10 @@
addEventListener('message', event => { addEventListener('message', event => {
if (event.origin !== 'https://utteranc.es') return; if (event.origin !== 'https://utteranc.es') return;
/// Called when Utterances is ready
utterancesLoaded = true;
setUtterancesTheme(document.documentElement.dataset.scheme) setUtterancesTheme(document.documentElement.dataset.scheme)
}); });
window.addEventListener('onColorSchemeChange', (e) => { window.addEventListener('onColorSchemeChange', (e) => {
if (!utterancesLoaded) return;
setUtterancesTheme(e.detail) setUtterancesTheme(e.detail)
}) })
</script> </script>

View File

@ -3,7 +3,7 @@
<div id="vssue"></div> <div id="vssue"></div>
<script src="https://unpkg.com/vue@2/dist/vue.runtime.min.js"></script> <script src="https://unpkg.com/vue/dist/vue.runtime.min.js"></script>
<script src="https://unpkg.com/vssue/dist/vssue.{{ .platform }}.min.js"></script> <script src="https://unpkg.com/vssue/dist/vssue.{{ .platform }}.min.js"></script>
<script> <script>

View File

@ -1,5 +1,4 @@
<script src='//unpkg.com/@waline/client@v2/dist/waline.js'></script> <script src='//cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js'></script>
<link href='//unpkg.com/@waline/client@v2/dist/waline.css' rel='stylesheet'/>
<div id="waline" class="waline-container"></div> <div id="waline" class="waline-container"></div>
<style> <style>
.waline-container { .waline-container {
@ -7,19 +6,18 @@
border-radius: var(--card-border-radius); border-radius: var(--card-border-radius);
box-shadow: var(--shadow-l1); box-shadow: var(--shadow-l1);
padding: var(--card-padding); padding: var(--card-padding);
--waline-font-size: var(--article-font-size);
} }
.waline-container .wl-count { .waline-container .vcount {
color: var(--card-text-color-main); color: var(--card-text-color-main);
} }
</style> </style>
{{- with .Site.Params.comments.waline -}} {{- with .Site.Params.comments.waline -}}
{{- $config := dict "el" "#waline" "dark" `html[data-scheme="dark"]` -}} {{- $config := dict "el" "#waline" "dark" `html[data-scheme="dark"]` -}}
{{- $replaceKeys := dict "serverurl" "serverURL" "requiredmeta" "requiredMeta" "wordlimit" "wordLimit" "pagesize" "pageSize" "imageuploader" "imageUploader" "texrenderer" "texRenderer" -}} {{- $replaceKeys := dict "serverurl" "serverURL" "requiredmeta" "requiredMeta" "wordlimit" "wordLimit" "pagesize" "pageSize" "avatarcdn" "avatarCDN" "avatarforce" "avatarForce" -}}
{{- range $key, $val := . -}} {{- range $key, $val := . -}}
{{- if ne $val nil -}} {{- if $val -}}
{{- $replaceKey := index $replaceKeys $key -}} {{- $replaceKey := index $replaceKeys $key -}}
{{- $k := default $key $replaceKey -}} {{- $k := default $key $replaceKey -}}
@ -29,6 +27,6 @@
<script> <script>
/// Waline client configuration see: https://waline.js.org/en/reference/client.html /// Waline client configuration see: https://waline.js.org/en/reference/client.html
Waline.init({{ $config | jsonify | safeJS }}); new Waline({{ $config | jsonify | safeJS }});
</script> </script>
{{- end -}} {{- end -}}

View File

@ -1,11 +1,6 @@
<!-- Use site subtitle by default --> <!-- Use site subtitle by default -->
{{ $description := .Site.Params.sidebar.subtitle }} {{ $description := .Site.Params.sidebar.subtitle }}
<!-- Seprate description exists -->
{{ if .Site.Params.description }}
{{ $description = .Site.Params.description }}
{{ end }}
{{ if .Description }} {{ if .Description }}
<!-- Page description exists --> <!-- Page description exists -->
{{ $description = .Description }} {{ $description = .Description }}
@ -14,4 +9,4 @@
{{ $description = .Summary }} {{ $description = .Summary }}
{{ end }} {{ end }}
{{ return (replaceRE "\n" " " $description | plainify) }} {{ return ($description | plainify)}}

View File

@ -1,12 +1,12 @@
{{- partial "helper/external" (dict "Context" . "Namespace" "Vibrant") -}} {{- partial "helper/external" (dict "Context" . "Namespace" "Vibrant") -}}
{{- $opts := dict "minify" hugo.IsProduction -}} {{- $opts := dict "minify" hugo.IsProduction -}}
{{- $script := resources.Get "ts/main.ts" | js.Build $opts | fingerprint -}} {{- $script := resources.Get "ts/main.ts" | js.Build $opts -}}
<script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script> <script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script>
{{- with resources.Get "ts/custom.ts" -}} {{- with resources.Get "ts/custom.ts" -}}
{{/* Place your custom script in HUGO_SITE_FOLDER/assets/ts/custom.ts */}} {{/* Place your custom script in HUGO_SITE_FOLDER/assets/ts/custom.ts */}}
{{- $customScript := . | js.Build $opts | fingerprint -}} {{- $customScript := . | js.Build $opts -}}
<script type="text/javascript" src="{{ $customScript.RelPermalink }}" defer></script> <script type="text/javascript" src="{{ $customScript.RelPermalink }}" defer></script>
{{- end -}} {{- end -}}

View File

@ -1,11 +1,11 @@
{{- $ThemeVersion := "3.30.0" -}} {{- $ThemeVersion := "3.9.0" -}}
<footer class="site-footer"> <footer class="site-footer">
<section class="copyright"> <section class="copyright">
&copy; &copy;
{{ if and (.Site.Params.footer.since) (ne .Site.Params.footer.since (int (now.Format "2006"))) }} {{ if and (.Site.Params.footer.since) (ne .Site.Params.footer.since (int (now.Format "2006"))) }}
{{ .Site.Params.footer.since }} - {{ .Site.Params.footer.since }} -
{{ end }} {{ end }}
{{ now.Format "2006" }} {{ default .Site.Title .Site.Copyright }} {{ now.Format "2006" }} {{ .Site.Title }}
</section> </section>
<section class="powerby"> <section class="powerby">

View File

@ -2,10 +2,9 @@
<meta name='viewport' content='width=device-width, initial-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1'>
{{- $description := partialCached "data/description" . .RelPermalink -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta name='description' {{ printf "content=%q" $description | safeHTMLAttr }}> <meta name='description' content='{{ $description }}'>
{{ with .Params.Keywords }}<meta name="keywords" content="{{ delimit . ", " }}">{{ end }}
{{- $title := partial "data/title" . -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
<title>{{ $title }}</title> <title>{{ $title }}</title>
<link rel='canonical' href='{{ .Permalink }}'> <link rel='canonical' href='{{ .Permalink }}'>
@ -19,7 +18,7 @@
{{- end -}} {{- end -}}
{{ with .Site.Params.favicon }} {{ with .Site.Params.favicon }}
<link rel="shortcut icon" href="{{ . | relURL }}" /> <link rel="shortcut icon" href="{{ . }}" />
{{ end }} {{ end }}
{{- template "_internal/google_analytics.html" . -}} {{- template "_internal/google_analytics.html" . -}}

View File

@ -1,8 +1,8 @@
{{- $title := partialCached "data/title" . .RelPermalink -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
{{- $description := partialCached "data/description" . .RelPermalink -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta property='og:title' {{ printf "content=%q" $title | safeHTMLAttr }}> <meta property='og:title' content='{{ $title }}'>
<meta property='og:description' {{ printf "content=%q" $description | safeHTMLAttr }}> <meta property='og:description' content='{{ $description }}'>
<meta property='og:url' content='{{ .Permalink }}'> <meta property='og:url' content='{{ .Permalink }}'>
<meta property='og:site_name' content='{{ .Site.Title }}'> <meta property='og:site_name' content='{{ .Site.Title }}'>
<meta property='og:type' content=' <meta property='og:type' content='
@ -32,8 +32,8 @@
<meta property='article:modified_time' content='{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}'/> <meta property='article:modified_time' content='{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}'/>
{{- end -}} {{- end -}}
{{- else -}} {{- else -}}
{{- if not .Site.Lastmod.IsZero -}} {{- if not .Site.LastChange.IsZero -}}
<meta property='og:updated_time' content='{{ .Site.Lastmod.Format " 2006-01-02T15:04:05-07:00 " | safeHTML }}'/> <meta property='og:updated_time' content='{{ .Site.LastChange.Format " 2006-01-02T15:04:05-07:00 " | safeHTML }}'/>
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}

View File

@ -6,8 +6,8 @@
{{- $title := partialCached "data/title" . .RelPermalink -}} {{- $title := partialCached "data/title" . .RelPermalink -}}
{{- $description := partialCached "data/description" . .RelPermalink -}} {{- $description := partialCached "data/description" . .RelPermalink -}}
<meta name="twitter:title" {{ printf "content=%q" $title | safeHTMLAttr }}> <meta name="twitter:title" content="{{ $title }}">
<meta name="twitter:description" {{ printf "content=%q" $description | safeHTMLAttr }}> <meta name="twitter:description" content="{{ $description }}">
{{- $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" -}} {{- $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" -}}
{{- if $image.exists -}} {{- if $image.exists -}}

View File

@ -1,3 +1,3 @@
{{ $sass := resources.Get "scss/style.scss" }} {{ $sass := resources.Get "scss/style.scss" }}
{{ $style := $sass | toCSS | minify | resources.Fingerprint "sha256" }} {{ $style := $sass | resources.ToCSS | minify | resources.Fingerprint "sha256" }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}"> <link rel="stylesheet" href="{{ $style.RelPermalink }}">

View File

@ -38,14 +38,13 @@
</header> </header>
{{- with .Site.Menus.social -}} {{- with .Site.Menus.social -}}
<ol class="menu-social"> <ol class="social-menu">
{{ range . }} {{ range . }}
<li> <li>
<a <a
href='{{ .URL }}' href='{{ .URL }}'
{{ if eq (default true .Params.newTab) true }}target="_blank"{{ end }} {{ if eq (default true .Params.newTab) true }}target="_blank"{{ end }}
{{ with .Name }}title="{{ . }}"{{ end }} {{ with .Name }}title="{{ . }}"{{ end }}
rel="me"
> >
{{ $icon := default "link" .Params.Icon }} {{ $icon := default "link" .Params.Icon }}
{{ with $icon }} {{ with $icon }}
@ -61,11 +60,12 @@
{{ $currentPage := . }} {{ $currentPage := . }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
{{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }} {{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }}
<li {{ if $active }} class='current' {{ end }}> <li {{ if $active }} class='current' {{ end }}>
<a href='{{ .URL }}' {{ if eq .Params.newTab true }}target="_blank"{{ end }}> <a href='{{ .URL | relLangURL }}' {{ if eq .Params.newTab true }}target="_blank"{{ end }}>
{{ $icon := default .Pre .Params.Icon }} {{ $icon := default .Pre .Params.Icon }}
{{ if .Pre }} {{ if .Pre }}
{{ warnf "Menu item [%s] is using [pre] field to set icon, please use [params.icon] instead.\nMore information: https://stack.jimmycai.com/config/menu" .URL }} {{ warnf "Menu item [%s] is using [pre] field to set icon, please use [params.icon] instead.\nMore information: https://docs.stack.jimmycai.com/configuration/custom-menu.html" .URL }}
{{ end }} {{ end }}
{{ with $icon }} {{ with $icon }}
{{ partial "helper/icon" . }} {{ partial "helper/icon" . }}
@ -74,30 +74,27 @@
</a> </a>
</li> </li>
{{ end }} {{ end }}
<li class="menu-bottom-section">
<ol class="menu">
{{- $currentLanguageCode := .Language.Lang -}}
{{ if ( compare.Gt .Site.Home.AllTranslations.Len 1 ) }}
{{ with .Site.Home.AllTranslations }}
<li id="i18n-switch">
{{ partial "helper/icon" "language" }}
<select name="language" title="language" onchange="window.location.href = this.selectedOptions[0].value">
{{ range . }}
<option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
{{ end }}
</select>
</li>
{{ end }}
{{ end }}
{{ if (default false .Site.Params.colorScheme.toggle) }} <div class="menu-bottom-section">
<li id="dark-mode-toggle"> {{- $currentLanguageCode := .Language.Lang -}}
{{ partial "helper/icon" "toggle-left" }} {{ with .Site.Home.AllTranslations }}
{{ partial "helper/icon" "toggle-right" }} <li id="i18n-switch">
<span>{{ T "darkMode" }}</span> {{ partial "helper/icon" "language" }}
</li> <select name="language" onchange="window.location.href = this.selectedOptions[0].value">
{{ end }} {{ range . }}
</ol> <option value="{{ .Permalink }}" {{ if eq .Language.Lang $currentLanguageCode }}selected{{ end }}>{{ .Language.LanguageName }}</option>
</li> {{ end }}
</select>
</li>
{{ end }}
{{ if (default false .Site.Params.colorScheme.toggle) }}
<li id="dark-mode-toggle">
{{ partial "helper/icon" "toggle-left" }}
{{ partial "helper/icon" "toggle-right" }}
<span>{{ T "darkMode" }}</span>
</li>
{{ end }}
</div>
</ol> </ol>
</aside> </aside>

View File

@ -4,10 +4,7 @@
<aside class="sidebar right-sidebar sticky"> <aside class="sidebar right-sidebar sticky">
{{ range $widget := . }} {{ range $widget := . }}
{{ if templates.Exists (printf "partials/widget/%s.html" .type) }} {{ if templates.Exists (printf "partials/widget/%s.html" .type) }}
<!-- Ensure that the `params` is not nil --> {{ partial (printf "widget/%s" .type) (dict "Context" $context "Params" .params) }}
{{- $params := default dict .params -}}
{{ partial (printf "widget/%s" .type) (dict "Context" $context "Params" $params) }}
{{ else }} {{ else }}
{{ warnf "Widget %s not found" .type }} {{ warnf "Widget %s not found" .type }}
{{ end }} {{ end }}

View File

@ -1,4 +0,0 @@
<script
type="application/javascript"
src="https://gitlab.com/-/snippets/{{ index .Params 0 }}.js"
></script>

View File

@ -1,15 +0,0 @@
<blockquote>
<p>{{ .Inner | markdownify }}</p>
{{- if or (.Get "author") (.Get "source") -}}
<span class="cite"><span></span>
{{- if .Get "author" -}}
<span>
{{- .Get "author" -}}{{- if .Get "source" -}}, {{ end -}}
</span>
{{- end -}}
{{- with .Get "url" -}}<a href="{{ . }}">{{- end -}}
<cite>{{ .Get "source" }}</cite>
{{- if .Get "url" -}}</a>{{- end -}}
</span>
{{- end -}}
</blockquote>

View File

@ -2,7 +2,7 @@
publish = "exampleSite/public" publish = "exampleSite/public"
[build.environment] [build.environment]
HUGO_VERSION = "0.124.0" HUGO_VERSION = "0.87.0"
HUGO_THEME = "repo" HUGO_THEME = "repo"
[context.production] [context.production]
@ -23,4 +23,4 @@
# If it should show more verbose logs (optional, default = true) # If it should show more verbose logs (optional, default = true)
debug = true debug = true
# Relative path to source directory in case you use Hugo's "--s" option # Relative path to source directory in case you use Hugo's "--s" option
srcdir = "exampleSite" srcdir = "exampleSite"

Some files were not shown because too many files have changed in this diff Show More