Showing preview only (314K chars total). Download the full file or copy to clipboard to get everything.
Repository: thegeeklab/hugo-geekdoc
Branch: main
Commit: f0794c7aadbe
Files: 206
Total size: 267.4 KB
Directory structure:
gitextract_qte0gx_s/
├── .cspell.json
├── .github/
│ └── settings.yaml
├── .gitignore
├── .gitsv/
│ └── config.yaml
├── .htmlvalidate.json
├── .jsbeautifyrc
├── .lighthouserc.yaml
├── .lycheeignore
├── .markdownlint.yaml
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .prettierrc
├── .tarignore
├── .woodpecker/
│ ├── build-package.yaml
│ ├── docs.yaml
│ └── static.yaml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── archetypes/
│ ├── docs.md
│ └── posts.md
├── assets/
│ └── search/
│ ├── config.json
│ └── data.json
├── eslint.config.js
├── exampleSite/
│ ├── config/
│ │ └── _default/
│ │ ├── hugo.yaml
│ │ ├── languages.yaml
│ │ └── params.yaml
│ ├── content/
│ │ └── en/
│ │ ├── _includes/
│ │ │ ├── _index.md
│ │ │ └── include-page.md
│ │ ├── _index.md
│ │ ├── asciidoc/
│ │ │ ├── admonition-icons.adoc
│ │ │ └── admonitions.adoc
│ │ ├── collapse/
│ │ │ ├── _index.md
│ │ │ ├── level-1/
│ │ │ │ ├── _index.md
│ │ │ │ ├── level-1-1.md
│ │ │ │ └── level-1-2.md
│ │ │ └── level-2/
│ │ │ ├── _index.md
│ │ │ ├── level-2-1.md
│ │ │ └── level-2-2.md
│ │ ├── features/
│ │ │ ├── _index.md
│ │ │ ├── code-blocks.md
│ │ │ ├── dark-mode/
│ │ │ │ └── _index.md
│ │ │ ├── icon-sets.md
│ │ │ ├── multilingual/
│ │ │ │ └── _index.md
│ │ │ └── theming/
│ │ │ └── _index.md
│ │ ├── posts/
│ │ │ ├── _index.md
│ │ │ ├── hello_geekdoc.md
│ │ │ └── initial-release.md
│ │ ├── shortcodes/
│ │ │ ├── _index.md
│ │ │ ├── audio/
│ │ │ │ └── _index.md
│ │ │ ├── avatar/
│ │ │ │ └── _index.md
│ │ │ ├── buttons.md
│ │ │ ├── columns.md
│ │ │ ├── expand.md
│ │ │ ├── hints.md
│ │ │ ├── icons.md
│ │ │ ├── images/
│ │ │ │ └── _index.md
│ │ │ ├── includes.md
│ │ │ ├── katex.md
│ │ │ ├── mermaid.md
│ │ │ ├── progress.md
│ │ │ ├── propertylist.md
│ │ │ ├── tabs.md
│ │ │ ├── toc-tree.md
│ │ │ └── toc.md
│ │ ├── toc-tree/
│ │ │ ├── _index.md
│ │ │ ├── level-1/
│ │ │ │ ├── _index.md
│ │ │ │ ├── level-1-1.md
│ │ │ │ ├── level-1-2.md
│ │ │ │ └── level-1-3/
│ │ │ │ ├── _index.md
│ │ │ │ └── level-1-3-1.md
│ │ │ └── level-2/
│ │ │ ├── _index.md
│ │ │ ├── level-2-1.md
│ │ │ └── level-2-2.md
│ │ └── usage/
│ │ ├── _index.md
│ │ ├── configuration.md
│ │ ├── customization.md
│ │ ├── getting-started.md
│ │ └── menus.md
│ ├── data/
│ │ ├── menu/
│ │ │ ├── extra.yaml
│ │ │ ├── main.yaml
│ │ │ └── more.yaml
│ │ └── properties/
│ │ ├── demo.yaml
│ │ ├── shortcode-audio.yaml
│ │ ├── shortcode-avatar.yaml
│ │ ├── shortcode-buttons.yaml
│ │ ├── shortcode-columns.yaml
│ │ ├── shortcode-hints.yaml
│ │ ├── shortcode-images.yaml
│ │ ├── shortcode-includes.yaml
│ │ ├── shortcode-katex.yaml
│ │ ├── shortcode-mermaid.yaml
│ │ ├── shortcode-progress.yaml
│ │ ├── shortcode-propertylist.yaml
│ │ ├── shortcode-toc-tree.yaml
│ │ └── shortcode-toc.yaml
│ ├── layouts/
│ │ └── shortcodes/
│ │ └── sprites.html
│ └── static/
│ ├── .htaccess
│ ├── _includes/
│ │ ├── example.html.part
│ │ └── example.md.part
│ ├── custom.css
│ └── custom.css.example
├── i18n/
│ ├── am.yaml
│ ├── cs.yaml
│ ├── da.yaml
│ ├── de.yaml
│ ├── en.yaml
│ ├── es.yaml
│ ├── fr.yaml
│ ├── it.yaml
│ ├── ja.yaml
│ ├── nl.yaml
│ ├── oc.yaml
│ └── zh-cn.yaml
├── layouts/
│ ├── 404.html
│ ├── _default/
│ │ ├── _markup/
│ │ │ ├── render-codeblock-mermaid.html
│ │ │ ├── render-heading.html
│ │ │ ├── render-image.html
│ │ │ └── render-link.html
│ │ ├── baseof.html
│ │ ├── list.html
│ │ ├── single.html
│ │ ├── taxonomy.html
│ │ └── terms.html
│ ├── partials/
│ │ ├── foot.html
│ │ ├── head/
│ │ │ ├── custom.html
│ │ │ ├── favicons.html
│ │ │ ├── meta.html
│ │ │ ├── microformats.html
│ │ │ ├── others.html
│ │ │ └── rel-me.html
│ │ ├── language.html
│ │ ├── menu-bundle-np.html
│ │ ├── menu-bundle.html
│ │ ├── menu-extra.html
│ │ ├── menu-filetree-np.html
│ │ ├── menu-filetree.html
│ │ ├── menu.html
│ │ ├── microformats/
│ │ │ ├── opengraph.html
│ │ │ ├── schema.html
│ │ │ └── twitter_cards.html
│ │ ├── page-header.html
│ │ ├── page-metadata.html
│ │ ├── pagination.html
│ │ ├── posts/
│ │ │ └── metadata.html
│ │ ├── search.html
│ │ ├── site-footer.html
│ │ ├── site-header.html
│ │ ├── svg-icon-symbols.html
│ │ └── utils/
│ │ ├── content.html
│ │ ├── description.html
│ │ ├── featured.html
│ │ └── title.html
│ ├── posts/
│ │ ├── list.html
│ │ └── single.html
│ ├── robots.txt
│ └── shortcodes/
│ ├── audio.html
│ ├── avatar.html
│ ├── button.html
│ ├── columns.html
│ ├── expand.html
│ ├── gist.html
│ ├── hint.html
│ ├── icon.html
│ ├── img.html
│ ├── include.html
│ ├── katex.html
│ ├── mermaid.html
│ ├── progress.html
│ ├── propertylist.html
│ ├── tab.html
│ ├── tabs.html
│ ├── toc-tree.html
│ └── toc.html
├── package.json
├── renovate.json
├── src/
│ ├── js/
│ │ ├── accessibility.js
│ │ ├── colorTheme.js
│ │ ├── config.js
│ │ ├── index.js
│ │ ├── katex.js
│ │ ├── mermaid.js
│ │ └── search.js
│ ├── sass/
│ │ ├── _asciidoc.scss
│ │ ├── _base.scss
│ │ ├── _chroma_base.scss
│ │ ├── _chroma_dark.scss
│ │ ├── _chroma_light.scss
│ │ ├── _color_mode.scss
│ │ ├── _defaults.scss
│ │ ├── _fonts.scss
│ │ ├── _markdown.scss
│ │ ├── _mobile.scss
│ │ ├── _normalize.css
│ │ ├── _print.scss
│ │ ├── _shortcodes.scss
│ │ ├── _utils.scss
│ │ ├── main.scss
│ │ ├── mobile.scss
│ │ └── print.scss
│ └── static/
│ └── custom.css
├── svgsprite.config.json
├── theme.toml
├── webpack.config.js
└── webpack.plugins.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .cspell.json
================================================
{
"version": "0.2",
"language": "en",
"dictionaries": ["en_us", "softwareTerms", "companies", "bash", "html", "css", "typescript"],
"words": [
"geekdoc",
"katex",
"flexsearch",
"pygments",
"Geekdocs",
"goldmark",
"THEMEDIR",
"gohugo",
"canonify",
"codecopy",
"lstore",
"lntable",
"lastmod",
"Preproc",
"lntd",
"Emph",
"anchorwrap",
"languagecode",
"relref",
"linenos",
"admonitionblock",
"uuidv4",
"cfworker",
"readmore",
"editpage",
"codecontainer",
"necolas",
"Shpak",
"Kaussow"
],
"ignorePaths": [
".woodpecker",
".cspell.json",
".git",
".gitignore",
".vscode",
"*.svg",
"renovate.json",
"package.json",
".lighthouserc.yaml",
"config.yaml",
"hugo.yaml",
"webpack.config.js",
"theme.toml",
"svgsprite.config.json",
"i18n/*"
],
"ignoreRegExpList": ["&\\S+;", "{{.+}}"]
}
================================================
FILE: .github/settings.yaml
================================================
repository:
name: hugo-geekdoc
description: Hugo theme made for documentation
homepage: https://geekdocs.de
topics: hugo, theme, hugo-theme, documentation
private: false
has_issues: true
has_projects: false
has_wiki: false
has_downloads: true
default_branch: main
allow_squash_merge: true
allow_merge_commit: true
allow_rebase_merge: true
labels:
- name: bug
color: d73a4a
description: Something isn't working
- name: documentation
color: 0075ca
description: Improvements or additions to documentation
- name: duplicate
color: cfd3d7
description: This issue or pull request already exists
- name: enhancement
color: a2eeef
description: New feature or request
- name: good first issue
color: 7057ff
description: Good for newcomers
- name: help wanted
color: 008672
description: Extra attention is needed
- name: invalid
color: e4e669
description: This doesn't seem right
- name: question
color: d876e3
description: Further information is requested
- name: wontfix
color: ffffff
description: This will not be worked on
branches:
- name: main
protection:
required_pull_request_reviews: null
required_status_checks:
strict: false
contexts:
- ci/woodpecker/pr/static
- ci/woodpecker/pr/build-package
- ci/woodpecker/pr/docs
enforce_admins: false
required_linear_history: true
restrictions: null
================================================
FILE: .gitignore
================================================
# local environments
.swp
.env*
/dist/
/build/
/node_modules/
/lhci_reports/
/exampleSite/themes/
/exampleSite/public/
/exampleSite/config/development/
CHANGELOG.md
VERSION
# translation envs
exampleSite/content/de
# auto-generated files
/data/
/static/
/assets/sprites/
/resources/
/exampleSite/resources/
/exampleSite/data/sprites/
VERSION
# hugo
.hugo_build.lock
# testing
.lighthouseci/
================================================
FILE: .gitsv/config.yaml
================================================
---
version: "1.1"
versioning:
update-major: []
update-minor: [feat]
update-patch: [fix, perf, refactor, chore, test, ci, docs]
tag:
pattern: "v%d.%d.%d"
release-notes:
sections:
- name: Features
commit-types: [feat]
section-type: commits
- name: Bug Fixes
commit-types: [fix]
section-type: commits
- name: Performance Improvements
commit-types: [perf]
section-type: commits
- name: Code Refactoring
commit-types: [refactor]
section-type: commits
- name: Others
commit-types: [chore]
section-type: commits
- name: Testing
commit-types: [test]
section-type: commits
- name: CI Pipeline
commit-types: [ci]
section-type: commits
- name: Documentation
commit-types: [docs]
section-type: commits
- name: BREAKING CHANGES
section-type: breaking-changes
commit-message:
footer:
issue:
key: issue
add-value-prefix: "#"
issue:
regex: "#?[0-9]+"
================================================
FILE: .htmlvalidate.json
================================================
{
"extends": ["html-validate:standard"],
"rules": {
"element-required-content": "off",
"element-permitted-content": "off",
"no-raw-characters": "off",
"attribute-misuse": "warn"
}
}
================================================
FILE: .jsbeautifyrc
================================================
{
"indent_size": 4,
"indent_char": " ",
"preserve_newlines": false,
"unformatted": ["svg"],
"content_unformatted": ["pre"],
"extra_liners": ["head", "body", "html", "main", "header", "footer", "section"]
}
================================================
FILE: .lighthouserc.yaml
================================================
---
ci:
collect:
numberOfRuns: 3
staticDistDir: exampleSite/public
url:
- http://localhost/
- http://localhost/404.html
- http://localhost/usage/getting-started/
settings:
chromeFlags: "--no-sandbox --headless --disable-dev-shm-usage"
onlyCategories: ["performance", "accessibility", "best-practices", "seo"]
skipAudits:
[
"color-contrast",
"uses-long-cache-ttl",
"csp-xss",
"bf-cache",
"is-crawlable",
"image-size-responsive",
"render-blocking-resources",
"largest-contentful-paint",
"unused-css-rules",
"network-dependency-tree-insight",
"legacy-javascript",
"errors-in-console",
"max-potential-fid",
"interactive",
"dom-size",
"forced-reflow-insight",
"unused-javascript",
"cls-culprits-insight",
"cache-insight",
"render-blocking-insight"
]
assert:
preset: "lighthouse:no-pwa"
assertions:
color-contrast: off
uses-long-cache-ttl: off
csp-xss: off
# FIXME: https://github.com/GoogleChrome/lighthouse/issues/14957
bf-cache: off
is-crawlable: off
image-size-responsive: off
render-blocking-resources: off
largest-contentful-paint: off
unused-css-rules: off
network-dependency-tree-insight: off
cls-culprits-insight: off
cache-insight: off
render-blocking-insight: off
legacy-javascript: off
errors-in-console: off
max-potential-fid: off
interactive: off
dom-size: off
forced-reflow-insight: off
unused-javascript: off
total-byte-weight: warn
identical-links-same-purpose: warn
tap-targets: off
unsized-images: warn
# FIXME: https://github.com/GoogleChrome/lighthouse/issues/11460
categories:performance:
- warn
- minScore: 0.95
categories:accessibility:
- error
- minScore: 1
categories:seo:
- error
- minScore: 0.95
upload:
target: filesystem
outputDir: lhci_reports
================================================
FILE: .lycheeignore
================================================
https://github.com/thegeeklab/.+/edit/main/.*
https://unsplash.com.*
https://www.color-hex.com.*
https://geekdocs.de/
================================================
FILE: .markdownlint.yaml
================================================
---
default: True
MD013: False
MD041: False
MD042: False
MD004:
style: dash
MD010:
code_blocks: False
================================================
FILE: .npmrc
================================================
loglevel=error
fund=false
engine-strict=true
================================================
FILE: .nvmrc
================================================
lts/*
================================================
FILE: .prettierignore
================================================
_normalize.css
list.json.json
/.lighthouseci/
/themes/
/static/js/
/src/favicon/
LICENSE
**/*.html
================================================
FILE: .prettierrc
================================================
{
"printWidth": 99,
"singleQuote": false,
"semi": false,
"trailingComma": "none"
}
================================================
FILE: .tarignore
================================================
.envrc
.nvmrc
.npmrc
.tarignore
.git*
.woodpecker*
.lighthouse*
.markdownlint*
.jsbeautify*
.prettier*
.htmlvalidate*
.lycheeignore*
.cspell*
eslint*
example*
webpack*
svgsprite*
package*
node*
local*
dist
src
build
renovate*
resources
CONTRIBUTING.md
================================================
FILE: .woodpecker/build-package.yaml
================================================
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: assets
image: docker.io/library/node:lts
commands:
- npm install --quiet --no-progress
- npm run build
- cat VERSION
environment:
FORCE_COLOR: "true"
- name: package
image: docker.io/library/node:lts
commands:
- npm run pack
environment:
FORCE_COLOR: "true"
- name: checksum
image: quay.io/thegeeklab/alpine-tools
commands:
- cd dist/ && sha256sum * > ../sha256sum.txt
- name: changelog
image: quay.io/thegeeklab/git-sv
commands:
- git sv current-version
- git sv release-notes -t ${CI_COMMIT_TAG:-next} -o CHANGELOG.md
- cat CHANGELOG.md
- name: publish-github
image: docker.io/plugins/github-release
settings:
api_key:
from_secret: github_token
files:
- dist/*
- sha256sum.txt
note: CHANGELOG.md
overwrite: true
title: ${CI_COMMIT_TAG}
when:
- event: [tag]
depends_on:
- static
================================================
FILE: .woodpecker/docs.yaml
================================================
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: assets
image: docker.io/library/node:lts
commands:
- npm install --quiet --no-progress
- npm run svg-sprite-list
- mkdir -p exampleSite/themes/${CI_REPO_NAME}
- curl -sSL https://github.com/${CI_REPO}/releases/latest/download/${CI_REPO_NAME}.tar.gz | tar -xz -C exampleSite/themes/${CI_REPO_NAME}/ --strip-components=1
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- name: assets-main
image: docker.io/library/node:lts
commands:
- npm install --quiet --no-progress
- npm run build
- npm run svg-sprite-list
- mkdir -p exampleSite/themes/ && ln -s $(pwd)/ exampleSite/themes/${CI_REPO_NAME}
environment:
FORCE_COLOR: "true"
when:
- event: [pull_request]
- name: build
image: quay.io/thegeeklab/hugo:0.160
commands:
- hugo --panicOnWarning -s exampleSite/
- name: beautify
image: quay.io/thegeeklab/alpine-tools
commands:
- html-beautify -r -f 'exampleSite/public/**/*.html'
environment:
FORCE_COLOR: "true"
- name: publish
image: quay.io/thegeeklab/wp-s3-action
settings:
access_key:
from_secret: s3_access_key
bucket: geekdocs-root
delete: true
endpoint:
from_secret: s3_endpoint
path_style: true
secret_key:
from_secret: s3_secret_access_key
source: exampleSite/public/
strip_prefix: exampleSite/public/
when:
- event: [tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
status: [success, failure]
depends_on:
- build-package
================================================
FILE: .woodpecker/static.yaml
================================================
---
when:
- event: [pull_request, tag]
- event: [push, manual]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
- name: eslint
image: docker.io/library/node:lts
depends_on: []
commands:
- npm install --quiet --no-progress
- npm run lint:js
environment:
FORCE_COLOR: "true"
- name: markdownlint
image: quay.io/thegeeklab/markdownlint-cli
depends_on: []
commands:
- markdownlint 'exampleSite/content/**/*.md' 'README.md' 'CONTRIBUTING.md'
- name: spellcheck
image: ghcr.io/streetsidesoftware/cspell
depends_on: []
commands:
- cspell-cli lint . --gitignore --color
- name: assets
image: docker.io/library/node:lts
depends_on: []
commands:
- npm install --quiet --no-progress
- npm run build
environment:
FORCE_COLOR: "true"
- name: testbuild
image: quay.io/thegeeklab/hugo:0.160
depends_on: [assets]
commands:
- mkdir -p exampleSite/themes/ && ln -s $(pwd)/ exampleSite/themes/${CI_REPO_NAME}
- hugo --panicOnWarning -s exampleSite/
- name: link-validation
image: docker.io/lycheeverse/lychee:0.23
depends_on: [testbuild]
commands:
- lychee --no-progress --format detailed README.md
- lychee --no-progress --format detailed --root-dir "$(pwd)/exampleSite/public" "exampleSite/public/**/*.html"
environment:
GITHUB_TOKEN:
from_secret: github_token_ro
- name: html-validation
image: docker.io/library/node:lts
depends_on: [testbuild]
commands:
- npm install --quiet --no-progress
- npm run lint:html
environment:
FORCE_COLOR: "true"
- name: page-validation
image: quay.io/thegeeklab/lhci:0.15
depends_on: [testbuild]
commands:
- lhci autorun
environment:
LHCI_SERVER_URL: https://ci-artifact.rknet.org/${CI_REPO_NAME}/
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
## Security
If you think you have found a **security issue**, please do not mention it in this repository.
Instead, send an email to `security@thegeeklab.de` with as many details as possible so it can be handled confidential.
## Bug Reports and Feature Requests
If you have found a **bug** or have a **feature request** please use the search first to see if a similar issue already exists.
If not, please create an issue in this repository
## Code
If you would like to fix a bug or implement a feature, please fork the repository and create a Pull Request.
Before you start any Pull Request, it is recommended that you create an issue to discuss first if you have any
doubts about requirement or implementation. That way you can be sure that the maintainer(s) agree on what to change and how,
and you can hopefully get a quick merge afterwards.
Pull Requests can only be merged once all status checks are green.
## Do not force push to your Pull Request branch
Please do not force push to your Pull Requests branch after you have created your Pull Request, as doing so makes it harder for us to review your work.
Pull Requests will always be squashed by us when we merge your work. Commit as many times as you need in your Pull Request branch.
## Re-requesting a review
Please do not ping your reviewer(s) by mentioning them in a new comment. Instead, use the re-request review functionality.
Read more about this in the [GitHub docs, Re-requesting a review](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request#re-requesting-a-review).
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
# Geekdoc
[](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc)
[](https://gohugo.io)
[](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)
[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of great alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).

## Build and release process
This theme is subject to a CI driven build and release process common for software development. During the release build, all necessary assets are automatically built by [webpack](https://webpack.js.org/) and bundled in a release tarball. You can download the latest release from the GitHub [release page](https://github.com/thegeeklab/hugo-geekdoc/releases).
Due to the fact that `webpack` and `npm scripts` are used as pre-processors, the theme cannot be used from the main branch by default. If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `webpack` locally and run the build script once to create all required assets.
```shell
# install required packages from package.json
npm install
# run the build script to build required assets
npm run build
# build release tarball
npm run pack
```
See the [Getting Started Guide](https://geekdocs.de/usage/getting-started/) for details about the different setup options.
## Contributors
Special thanks to all [contributors](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors). If you would like to contribute, please see the [instructions](https://github.com/thegeeklab/hugo-geekdoc/blob/main/CONTRIBUTING.md).
Geekdoc is inspired and partially based on the [hugo-book](https://github.com/alex-shpak/hugo-book) theme, thanks [Alex Shpak](https://github.com/alex-shpak/) for your work.
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) file for details.
The used SVG icons and generated icon fonts are licensed under the license of the respective icon pack:
- Font Awesome: [CC BY 4.0 License](https://github.com/FortAwesome/Font-Awesome#license)
- IcoMoon Free Pack: [GPL/CC BY 4.0](https://icomoon.io/#icons-icomoon)
- Material Icons: [Apache License 2.0](https://github.com/google/material-design-icons/blob/main/LICENSE)
================================================
FILE: archetypes/docs.md
================================================
---
title: "{{ .Name | humanize | title }}"
weight: 1
# geekdocFlatSection: false
# geekdocToc: 6
# geekdocHidden: false
---
================================================
FILE: archetypes/posts.md
================================================
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
---
================================================
FILE: assets/search/config.json
================================================
{{- $searchDataFile := printf "search/%s.data.json" .Language.Lang -}}
{{- $searchData := resources.Get "search/data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify -}}
{
"dataFile": {{ $searchData.RelPermalink | jsonify }},
"indexConfig": {{ .Site.Params.geekdocSearchConfig | jsonify }},
"showParent": {{ if .Site.Params.geekdocSearchShowParent }}true{{ else }}false{{ end }},
"showDescription": {{ if .Site.Params.geekdocSearchShowDescription }}true{{ else }}false{{ end }}
}
================================================
FILE: assets/search/data.json
================================================
[
{{ range $index, $page := (where .Site.Pages "Params.geekdocProtected" "ne" true) }}
{{ if ne $index 0 }},{{ end }}
{
"id": {{ $index }},
"href": "{{ $page.RelPermalink }}",
"title": {{ (partial "utils/title" $page) | jsonify }},
"parent": {{ with $page.Parent }}{{ (partial "utils/title" .) | jsonify }}{{ else }}""{{ end }},
"content": {{ $page.Plain | jsonify }},
"description": {{ $page.Summary | plainify | jsonify }}
}
{{ end }}
]
================================================
FILE: eslint.config.js
================================================
import eslint from "@eslint/js"
import globals from "globals"
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"
export default [
eslint.configs.recommended,
{
languageOptions: {
globals: {
...globals.browser
},
ecmaVersion: "latest",
sourceType: "module"
},
rules: {
"no-var": "error",
"prefer-const": "error",
"prefer-arrow-callback": "error",
"prefer-template": "error",
"object-shorthand": "error",
"no-loop-func": "error",
"no-new-object": "error",
"no-array-constructor": "error",
"no-prototype-builtins": "error",
"prefer-spread": "error",
"prefer-rest-params": "error",
"default-param-last": "error",
"no-useless-constructor": "error",
"no-duplicate-imports": "error",
"prefer-destructuring": ["error", {
"VariableDeclarator": {
"array": true,
"object": true
},
"AssignmentExpression": {
"array": false,
"object": false
}
}]
}
},
eslintPluginPrettierRecommended
]
================================================
FILE: exampleSite/config/_default/hugo.yaml
================================================
---
baseURL: https://geekdocs.de/
title: Geekdocs
theme: hugo-geekdoc
pygmentsUseClasses: true
pygmentsCodeFences: true
timeout: "180000s"
pluralizeListTitles: false
defaultContentLanguage: en
disablePathToLower: true
enableGitInfo: true
enableRobotsTXT: true
markup:
goldmark:
renderer:
unsafe: true
tableOfContents:
startLevel: 1
endLevel: 9
taxonomies:
tag: tags
outputs:
home:
- HTML
page:
- HTML
section:
- HTML
taxonomy:
- HTML
term:
- HTML
security:
exec:
allow:
- "^git$"
- "^asciidoctor$"
================================================
FILE: exampleSite/config/_default/languages.yaml
================================================
---
en:
languageName: "English"
contentDir: "content/en"
weight: 10
================================================
FILE: exampleSite/config/_default/params.yaml
================================================
---
# cspell:ignore socialmedia2
description: >
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme
and may not fit the requirements of complex projects. If a more feature-complete theme is required
there are a lot of good alternatives out there.
images:
- "socialmedia2.png"
geekdocToC: 3
geekdocTagsToMenu: true
geekdocRepo: https://github.com/thegeeklab/hugo-geekdoc
geekdocEditPath: edit/main/exampleSite
geekdocPageLastmod: false
geekdocSearch: true
geekdocSearchShowParent: true
geekdocSearchShowDescription: true
geekdocLegalNotice: https://thegeeklab.de/legal-notice/#contact-information
geekdocPrivacyPolicy: https://thegeeklab.de/legal-notice/#privacy-policy
geekdocImageLazyLoading: true
geekdocDarkModeDim: true
================================================
FILE: exampleSite/content/en/_includes/_index.md
================================================
---
geekdocHidden: true
---
================================================
FILE: exampleSite/content/en/_includes/include-page.md
================================================
_**Example page include**_
{{< hint type=note >}}
**Example Shortcode**\
Shortcode used in an include page.
{{< /hint >}}
| Head 1 | Head 2 | Head 3 |
| ------ | ------ | ------ |
| 1 | 2 | 3 |
================================================
FILE: exampleSite/content/en/_index.md
================================================
---
title: Welcome to the documentation
geekdocNav: false
geekdocAlign: center
geekdocAnchor: false
---
<!-- markdownlint-capture -->
<!-- markdownlint-disable MD033 -->
<span class="badge-placeholder">[](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc)</span>
<span class="badge-placeholder">[](https://gohugo.io)</span>
<span class="badge-placeholder">[](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)</span>
<span class="badge-placeholder">[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)</span>
<span class="badge-placeholder">[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)</span>
<!-- markdownlint-restore -->
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of great alternatives out there.
{{< button size="large" relref="usage/getting-started/" >}}Getting Started{{< /button >}}
## Feature overview
{{< columns >}}
### Clean and simple design
Stay focused on exploring the content and don't get overwhelmed by a complex design.
<--->
### Light and mobile-friendly
The theme is powered by less than 1 MB and looks impressive on mobile devices as well as on a regular Desktop.
<--->
### Easy customization
The look and feel can be easily customized by CSS custom properties (variables), features can be adjusted by Hugo parameters.
{{< /columns >}}
{{< columns >}}
### Zero initial configuration
Getting started in minutes. The theme is shipped with a default configuration and works out of the box.
<--->
### Handy shortcodes
We included some (hopefully) useful custom shortcodes so you don't have to and can focus on writing amazing docs.
<--->
### Dark mode
Powerful dark mode that detects your system preferences or can be controlled by a toggle switch.
{{< /columns >}}
================================================
FILE: exampleSite/content/en/asciidoc/admonition-icons.adoc
================================================
+++
title = "Admonition Icons"
+++
:icons: font
By default, the admonition is rendered with a plain text label. To enable font icons the document attribute `:icons: font` need to be set.
== Example
[NOTE]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[TIP]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[IMPORTANT]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[CAUTION]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[WARNING]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
================================================
FILE: exampleSite/content/en/asciidoc/admonitions.adoc
================================================
+++
title = "Admonitions"
+++
// cspell:ignore toclevels
:toc:
:toclevels: 2
{{< toc >}}
== Admonition types
There are certain statements you may want to draw attention to by taking them out of the content's flow and labeling them with a priority. These are called admonitions.
```tpl
[NOTE|TIP|IMPORTANT|CAUTION|WARNING]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
```
=== Example
[NOTE]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[TIP]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[IMPORTANT]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[CAUTION]
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
[WARNING]
====
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
Romanesque acclimates investiture.
====
== Admonition icons
Icons can be added by setting a unicode glyph or a character reference to the `tip-caption` attribute:
```text
:tip-caption: 💡
[TIP]
It's possible to use Unicode glyphs as admonition icons.
```
```text
:tip-caption: pass:[🔥]
[TIP]
It's possible to use Unicode glyphs as admonition icons.
```
=== Example
:tip-caption: 💡
[TIP]
It's possible to use Unicode glyphs as admonition icons.
:tip-caption: pass:[🔥]
[TIP]
It's possible to use Unicode glyphs as admonition icons.
================================================
FILE: exampleSite/content/en/collapse/_index.md
================================================
---
title: Collapse
geekdocCollapseSection: true
---
Demo collapsible menu entries.
================================================
FILE: exampleSite/content/en/collapse/level-1/_index.md
================================================
Level 1
<!-- cspell:disable -->
{{< toc-tree >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/collapse/level-1/level-1-1.md
================================================
---
title: Level 1.1
---
Level 1.1
================================================
FILE: exampleSite/content/en/collapse/level-1/level-1-2.md
================================================
---
title: Level 1.2
---
Level 1.2
================================================
FILE: exampleSite/content/en/collapse/level-2/_index.md
================================================
---
geekdocCollapseSection: true
---
Level-2
================================================
FILE: exampleSite/content/en/collapse/level-2/level-2-1.md
================================================
---
title: Level 2.1
---
Level 2.1
================================================
FILE: exampleSite/content/en/collapse/level-2/level-2-2.md
================================================
---
title: Level 2.2
---
Level 2.2
================================================
FILE: exampleSite/content/en/features/_index.md
================================================
---
title: Features
weight: -15
---
================================================
FILE: exampleSite/content/en/features/code-blocks.md
================================================
---
title: Code Blocks
---
There are several ways to add code blocks. Most of them work out of the box, only the Hugo shortcode `<highlight>` needs to be configured to work properly. The theme also provides some additional features like a copy button and an option to set the maximum length of code blocks. Both of these functions and the dependent formatting rely on the `.highlight` CSS class. You must ensure that you always assign a language to your code blocks if you want to use these functions. If you do not want to apply syntax highlighting, you can also specify `plain` or `text` as the language.
{{< toc >}}
## Inline code
To display an inline shortcode use single quotes:
```plain
`some code`
```
**Example:** `some code` with a [`link`](#)
## Code blocks
Code blocks can be uses without language specification:
````markdown
```plain
some code
```
````
**Example:**
```plain
some code
```
... or if you need language specific syntax highlighting:
````markdown
```shell
# some code
echo "Hello world"
```
````
**Example:**
```shell
# some code
echo "Hello World"
```
## Highlight shortcode
Hugo has a build-in shortcode for syntax highlighting. To work properly with this theme, you have to set following options in your site configuration:
{{< tabs "uniqueid" >}}
{{< tab "TOML" >}}
```toml
pygmentsUseClasses=true
pygmentsCodeFences=true
```
{{< /tab >}}
{{< tab "YAML" >}}
```yaml
pygmentsUseClasses: true
pygmentsCodeFences: true
```
{{< /tab >}}
{{< /tabs >}}
You can use it like every other shortcode:
<!-- prettier-ignore -->
```markdown
{{</* highlight Shell "linenos=table" */>}}
# some code
echo "Hello World"
{{</* /highlight */>}}
```
**Example:**
<!-- prettier-ignore-start -->
<!-- markdownlint-capture -->
<!-- markdownlint-disable -->
{{< highlight Shell "linenos=table" >}}
# some code
echo "Hello World"
{{< /highlight >}}
<!-- markdownlint-restore -->
<!-- prettier-ignore-end-->
## Gist Shortcode
The Gist shortcode is a built-in Hugo shortcode to load GitHub gists. For details usage information please check the Hugo [documentation](https://gohugo.io/content-management/shortcodes/#gist).
<!-- prettier-ignore -->
```markdown
{{</* gist spf13 7896402 */>}}
```
**Example:**
{{< gist spf13 7896402 >}}
================================================
FILE: exampleSite/content/en/features/dark-mode/_index.md
================================================
---
title: Dark Mode
---
Say hello to the dark mode of the Geekdoc theme!
[](images/geekdoc-dark.png)
The dark mode can be used in two different ways. If you have JavaScript disabled in your browser, the dark mode automatically detects the preferred system settings via the `prefers-color-scheme` parameter. Depending on the value, the theme will automatically switch between dark and light mode if this feature is supported by your operating system and browser.
The second mode requires JavaScript and is controlled by a dark mode switch in the upper right corner. You can switch between three modes: Auto, Dark and Light. Auto mode works the same as the first method mentioned above and automatically detects the system setting. Dark and Light modes allow you to force one of them for your Geekdoc page only, regardless of the system setting. This works even if your browser or operating system does not support the system setting. The current selection is stored locally via the Web Storage API.
To avoid very bright spots often caused by images while using the dark mode we have added an optional auto-dim feature that can be enabled with the site parameter `geekdocDarkModeDim` (see [Configuration](/usage/configuration/)). As this may have an impact on the quality of the images it is disabled by default.
================================================
FILE: exampleSite/content/en/features/icon-sets.md
================================================
---
title: Icon Sets
# cSpell:ignore svgsprit.es
---
{{< toc >}}
## Custom icon sets
The only supported source for custom icons are SVG sprites. Some icon frameworks provides ready to use sprites e.g. FontAwesome. If the framework don't provide sprites, you can create your own from raw SVG icons. There are a lot of tools available to create sprites, please choose one that fits your need. One solution could be [svgsprit.es](https://svgsprit.es/).
Regardless of which tool (or existing sprite) you choose, there are a few requirements that must be met:
1. The sprite must be a valid **SVG** file.
2. You have to ensure to **hide the sprite**. Apply the predefined class `svg-sprite` or `hidden` to the root element of your sprite or add a small piece of inline CSS e.g. `style="display: none;"`.
3. Save the sprite to the folder `assets/sprites` right beside your `content` folder.
The result of a valid minimal SVG sprite file could look like this:
```xml
<svg class="svg-sprite" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol viewBox="-2.29 -2.29 28.57 28.57" id="arrow_back" xmlns="http://www.w3.org/2000/svg">
<path d="M24 10.526v2.947H5.755l8.351 8.421-2.105 2.105-12-12 12-12 2.105 2.105-8.351 8.421H24z"/>
</symbol>
</svg>
```
**Example:**
FontAwesome provides three pre-build sprites included in the regular Web download pack, `sprites/brands.svg`, `sprites/regular.svg` and `sprites/solid.svg`. Choose your sprite to use and copy it to your project's root directory into `assets/sprites`, right beside your `content` folder:
```bash
my_project/
├── assets
│ └── sprites
│ └── regular.svg
├── hugo.toml
├── content
│ ├── _index.md
│ ├── ...
```
That's it! The theme will auto-load all available SVG sprites provided in the assets folder. To use the icons e.g. in the [bundle menu](/usage/menus/#bundle-menu), you need to lookup the id of the icon. An example would be `thumbs-up` {{< icon "thumbs-up" >}}. There is also a [shortcode](/shortcodes/icons/) available.
## Build-in icons
The theme bundles just a small set of hand crafted icons.
{{< sprites >}}
================================================
FILE: exampleSite/content/en/features/multilingual/_index.md
================================================
---
title: Multilingual
# cSpell:ignore Veröffentlichung
---
{{< toc >}}
Hugo supports the creation of websites with multiple languages. In this post we will explain how to get configure Multilingual Mode with this theme.
## Configuration
### Languages
You need to set a default language and configure at least two different languages used by your site to your configuration file at `hugo.toml`:
```toml
defaultContentLanguage = "en"
[languages.en]
languageName = "English"
contentDir = "content/en"
weight = 10
[languages.de]
languageName = "German"
contentDir = "content/de"
weight = 20
```
### Translation Strings
To customize translation strings used by the theme you can create a file `i18n/<languagecode>.toml` for every language you want to use e.g. `i18n/en.toml`. You can lookup all used strings in the [default](https://github.com/thegeeklab/hugo-geekdoc/blob/main/i18n/en.yaml) translation file.
### Menus
For the [Bundle Menu](/usage/menus/#bundle-menu) as well as for the [Extra Header Menu](/usage/menus/#extra-header-menu) you can translate the name within the data file of the menu:
```yaml
---
more:
# If `name` is a text, this text will be used as name for each language.
- name: News
ref: "/#"
icon: "gdoc_notification"
# To translate the name you can add a sub-item per language. Important: If you miss a language key
# that is configured in the languages list of your `hugo.toml` the name will be empty for this language!
- name:
en: Releases
de: Veröffentlichung
ref: "https://github.com/thegeeklab/hugo-geekdoc/releases"
external: true
icon: "gdoc_download"
```
## Add Content
To translate your content you need to create a directory `content/<languagecode>/` for each language you want to use e.g. `content/en/`. This language directories will hold the translated pages for the particular language.
## Switch Content
If you have configured at least two different languages, the language switcher will be enabled in the UI automatically. The switcher is as part of the header menu and displayed on all pages.
{{< columns >}}
[](images/translation-available.png)
On pages for which a translation is available it will be displayed in the selection list and links to the translated page.
<--->
[](images/translation-not-available.png)
Pages without a translation will be displayed in the selection list as well but are marked with an asterisk and link to the start page of the respective language.
{{< /columns >}}
================================================
FILE: exampleSite/content/en/features/theming/_index.md
================================================
---
title: Theming
# cspell:ignore msapplication
---
{{< toc >}}
## Color Scheme
If you want to customize the theme's color scheme to give it your individual touch, you are only a few lines of CSS away. Generally, you need to override the default settings. The easiest way to do this is to create a file named `static/custom.css` right at the root of your site.
All the necessary CSS customization properties are listed below. If you want to customize elements that don't use these properties, you can always look up the class name and override it directly. For inspiration, you can also take a look at [https://www.color-hex.com](https://www.color-hex.com/color-palettes/). In this simple example, we'll use the [_Beach_](https://www.color-hex.com/color-palette/895) color palette.
[](images/theme-example.png)
**Custom CSS:**
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< include file="/static/custom.css.example" language="CSS" options="linenos=table" >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Favicons
The Theme is shipped with a set of default Favicons in various formats generated by the [Favicon Generator](https://realfavicongenerator.net/). All files can be found in the `static/favicon` folder of the release tarball. To make the replacement of the default Favicons as simple as possible, the theme loads only a very small subset of the Favicon formats.
<!-- prettier-ignore -->
```tpl
<link rel="icon" type="image/svg+xml" href="{{ "favicon/favicon.svg" | relURL }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon/favicon-32x32.png" | relURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon/favicon-16x16.png" | relURL }}">
```
### Simple replacement
The minimal steps to load a custom Favicon is to overwrite the three default Favicon files. Therefore place these files into your projects root folder:
- `static/favicon/favicon.svg`
- `static/favicon/favicon-32x32.png`
- `static/favicon/favicon-16x16.png`
### Full replacement
If you want to add more Favicon formats you have to [overwrite](https://gohugo.io/templates/lookup-order/) the default partial that is used to load the files. In the next step you have to place the required files in the `static` folder of your project as well.
**Example:**
<!-- prettier-ignore -->
```tpl
<!-- layouts/partials/head/favicons.html -->
<link rel="icon" type="image/svg+xml" href="{{ "favicon/favicon.svg" | relURL }}">
<link rel="apple-touch-icon" sizes="180x180" href="{{ "favicon/apple-touch-icon.png" | relURL }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon/favicon-32x32.png" | relURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon/favicon-16x16.png" | relURL }}">
<link rel="manifest" href="{{ "favicon/site.webmanifest" | relURL }}">
<link rel="mask-icon" href="{{ "favicon/safari-pinned-tab.svg" | relURL }}" color="#efefef">
<meta name="msapplication-TileColor" content="#efefef">
<meta name="theme-color" content="#efefef">
```
## Fonts
To use a custom font, it needs to be specified first. While there are many ways to do this, we recommend to use `@font-face` as it supports local as well as remote fonts. If you want to serve the fonts from your own server, you have to place them in the `static/fonts` folder of your project.
The font registration is done in the `custom.css` file. There are also a few custom CSS properties available to simplify the usage of custom fonts.
**Example:**
<!-- prettier-ignore -->
```css
@font-face {
font-family: "DancingScript";
src:
url("fonts/DancingScript.woff2") format("woff2"),
url("fonts/DancingScript.woff") format("woff");
font-weight: normal;
font-style: normal;
font-display: swap;
}
:root {
--code-max-height: 60rem;
--header-font-family: "DancingScript";
--body-font-family: "DancingScript";
--code-font-family: "DancingScript";
}
```
Happy customizing!
================================================
FILE: exampleSite/content/en/posts/_index.md
================================================
---
title: News
type: posts
weight: 10
geekdocHidden: true
---
================================================
FILE: exampleSite/content/en/posts/hello_geekdoc.md
================================================
---
title: Hello Geekdoc
type: posts
date: 2020-01-06
tags:
- Documentation
- Updates
---
This is the first release of the Geekdoc theme.
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious copious quo ad. Stet probates in duo.
Amalia id per in minimum facility, quid facet modifier ea ma. Ill um select ma ad, en ferric patine sentient vim. Per expendable foreordained interpretations cu, maxim sole pertinacity in ram. Que no rota alters, ad sea sues exercise main rum, cu diam mas facility sea.
================================================
FILE: exampleSite/content/en/posts/initial-release.md
================================================
---
title: Initial release
type: posts
date: 2020-01-08
---
This is the first release of the Geekdoc theme.
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious copious quo ad. Stet probates in duo.
================================================
FILE: exampleSite/content/en/shortcodes/_index.md
================================================
---
title: Shortcodes
weight: -10
---
================================================
FILE: exampleSite/content/en/shortcodes/audio/_index.md
================================================
---
title: Audio
resources:
- name: diamonds-trap
src: "diamonds-trap.mp3"
title: Diamonds Trap
params:
credits: "[Jakob Eglmeier on openmusic.academy CC0-1.0](https://openmusic.academy/media-library/b9do2E2ZwVCfppyBf2yuej)"
# cspell:ignore Jakob Eglmeier openmusic
---
The audio shortcode allows you to embed audio files.
## Usage
Define your resources in the page front matter, custom parameter `params.credits` is optional.
<!-- cspell:disable -->
```md
---
resources:
- name: diamonds-trap
src: "diamonds-trap.mp3"
title: Diamonds Trap
params:
credits: "[Jakob Eglmeier on openmusic.academy CC0-1.0](https://openmusic.academy/media-library/b9do2E2ZwVCfppyBf2yuej)"
---
{{</* audio name="diamonds-trap" */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-audio sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
<!-- cspell:enable -->
## Example
<!-- cspell:disable -->
{{< audio name="diamonds-trap" >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/shortcodes/avatar/_index.md
================================================
---
title: Avatar
resources:
- name: avatar
src: "avatar.jpg"
title: "Avatar"
---
The avatar shortcode is another custom image shortcode.
<!--more-->
## Usage
Define a resource in the page front matter.
<!-- cspell:disable -->
```md
---
resources:
- name: avatar
src: "images/avatar.jpg"
title: "Avatar"
---
{{</* avatar name="avatar" */>}}
```
<!-- cspell:enable -->
## Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-avatar sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- cspell:disable -->
{{< avatar name=avatar size="small" >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/shortcodes/buttons.md
================================================
---
title: Buttons
---
Buttons are styled links that can lead to local page or external link.
## Usage
<!-- prettier-ignore -->
```tpl
{{</* button relref="/" [class="...", size="large|regular"] */>}}Get Home{{</* /button */>}}
{{</* button href="https://github.com/thegeeklab/hugo-geekdoc" */>}}Contribute{{</* /button */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-buttons sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- prettier-ignore-start -->
<!-- markdownlint-capture -->
<!-- markdownlint-disable -->
{{< button relref="/" >}}Get Home{{< /button >}}
{{< button href="https://github.com/thegeeklab/hugo-geekdoc" >}}Contribute{{< /button >}}
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
================================================
FILE: exampleSite/content/en/shortcodes/columns.md
================================================
---
title: Columns
---
The Columns shortcode can be used to organize content side-by-side (horizontally) for better readability.
## Usage
```html
{{</* columns */>}} <!-- begin columns block -->
## Left Content
Dolor sit, sumo unique argument um no ...
<---> <!-- magic separator, between columns -->
## Mid Content
Dolor sit, sumo unique argument um no ...
<---> <!-- magic separator, between columns -->
## Right Content
Dolor sit, sumo unique argument um no ...
{{</* /columns */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-columns sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
{{< columns >}}
### Left
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<--->
### Mid Content
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re.
<--->
### Right Content
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
{{< /columns >}}
================================================
FILE: exampleSite/content/en/shortcodes/expand.md
================================================
---
title: Expand
---
Expand shortcode can help to decrease clutter on screen by hiding part of text. Expand content by clicking on it.
## Usage
```tpl
{{</* expand */>}}
### Markdown content
Dolor sit, sumo unique ...
{{</* /expand */>}}
```
It is also possible to use a custom label and symbol.
<!-- prettier-ignore-start -->
```tpl
{{</* expand "Custom Label" "..." */>}}
### More markdown
Dolor sit, sumo unique ...
{{</* /expand */>}}
```
## Example
{{< expand >}}
### Markdown content
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture. Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /expand >}}
{{< expand "Custom Label" "..." >}}
### More markdown
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
{{< /expand >}}
================================================
FILE: exampleSite/content/en/shortcodes/hints.md
================================================
---
title: Hints
---
Hint shortcode can be used as hint/alerts/notification block.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* hint type=[note|tip|important|caution|warning] (icon=gdoc_github) (title=GitHub) */>}}
**Markdown content**\
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{</* /hint */>}}
```
<!-- prettier-ignore-end -->
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-hints sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
{{< hint type=note >}}
**Markdown content**\
Dolor sit, sumo unique `argument um no`. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /hint >}}
{{< hint type=tip >}}
**Markdown content**\
Dolor sit, sumo unique `argument um no`. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /hint >}}
{{< hint type=important >}}
**Markdown content**\
Dolor sit, sumo unique `argument um no`. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /hint >}}
{{< hint type=caution >}}
**Markdown content**\
Dolor sit, sumo unique `argument um no`. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /hint >}}
{{< hint type=warning >}}
**Markdown content**\
Dolor sit, sumo unique `argument um no`. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
Romanesque acclimates investiture.
{{< /hint >}}
Example with a custom icon and title:
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< hint type=note icon=gdoc_github title=GitHub >}}
**Markdown content**\
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture.
Ornateness bland it ex enc, est yeti am bongo detract re.
{{< /hint >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
================================================
FILE: exampleSite/content/en/shortcodes/icons.md
================================================
---
title: Icons
---
Simple shortcode to include icons from SVG sprites outside of menus.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* icon "thumbs-up" */>}}
```
<!-- prettier-ignore-end -->
## Example
| Output | Code |
| -------------------------- | -------------------------------- |
| {{< icon "thumbs-up" >}} | `{{</* icon "thumbs-up" */>}}` |
| {{< icon "thumbs-down" >}} | `{{</* icon "thumbs-down" */>}}` |
| {{< icon "laugh" >}} | `{{</* icon "laugh" */>}}` |
| {{< icon "lemon" >}} | `{{</* icon "lemon" */>}}` |
| {{< icon "moon" >}} | `{{</* icon "moon" */>}}` |
================================================
FILE: exampleSite/content/en/shortcodes/images/_index.md
================================================
---
title: Images
resources:
- name: forest-1
src: "forest-1.jpg"
title: Forest (1)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-2
src: "forest-2.jpg"
title: Forest (2)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-3
src: "forest-3.jpg"
title: Forest (3)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-4
src: "forest-4.jpg"
title: Forest (4)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-5
src: "forest-5.jpg"
title: Forest (5)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-6
src: "forest-6.jpg"
title: Forest (6)
params:
credits: "[Asher Ward](https://unsplash.com/@the_asher_ward) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-7
src: "forest-7.jpg"
title: Forest (7)
params:
credits: "[Asher Ward](https://unsplash.com/@the_asher_ward) on [Unsplash](https://unsplash.com/s/photos/forest)"
- name: forest-8
src: "forest-8.svg"
title: Forest (8)
params:
credits: "SVG Repo"
# cspell:ignore Mantri
---
If you need more flexibility for your embedded images, you could use the `img` shortcode. It is using Hugo's
[page resources](https://gohugo.io/content-management/page-resources/) and supports lazy loading of your images.
## Usage
Define your resources in the page front matter, custom parameter `params.credits` is optional.
<!-- cspell:disable -->
```md
---
resources:
- name: forest-1
src: "forest-1.jpg"
title: Forest (1)
params:
credits: "[Jay Mantri](https://unsplash.com/@jaymantri) on [Unsplash](https://unsplash.com/s/photos/forest)"
---
{{</* img name="forest-1" size="large" lazy=false */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-images sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
<!-- cspell:enable -->
## Example
<!-- cspell:disable -->
{{< img name="forest-1" lazy=false >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-2" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-3" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-4" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-5" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-6" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-7" lazy=true >}}
<!-- cspell:enable -->
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts
feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious
copious quo ad. Stet probates in duo.
<!-- cspell:disable -->
{{< img name="forest-8" size=small lazy=true >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/shortcodes/includes.md
================================================
---
title: Includes
---
Include shortcode can include files of different types. By specifying a language, the included file will have syntax highlighting.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* include file="relative/path/from/hugo/root" language="go" */>}}
```
<!-- prettier-ignore-end -->
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-includes sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
### Example 1: Markdown file (default)
If no other options are specified, files will be rendered as Markdown using the `RenderString` [function](https://gohugo.io/functions/renderstring/).
{{< hint type=important >}}
**Location of markdown files**\
If you include markdown files that should not get a menu entry, place them outside the content folder or exclude them otherwise.
{{< /hint >}}
<!-- prettier-ignore -->
```tpl
{{</* include file="/static/_includes/example.md.part" */>}}
```
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< include file="/static/_includes/example.md.part" >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
### Example 2: Language files
This method can be used to include source code files and keep them automatically up to date.
<!-- prettier-ignore -->
```tpl
{{</* include file="config/_default/hugo.yaml" language="yaml" options="linenos=table,hl_lines=5-6,linenostart=100" */>}}
```
Result:
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< include file="config/_default/hugo.yaml" language="yaml" options="linenos=table,hl_lines=5-6,linenostart=100" >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
### Example 3: HTML
HTML content will be filtered by the `safeHTML` filter and added to the rendered page output.
<!-- prettier-ignore -->
```tpl
{{</* include file="/static/_includes/example.html.part" type="html" */>}}
```
{{< include file="/static/_includes/example.html.part" type="html" >}}
### Example 4: Hugo Pages
In some situations, it can be helpful to include Markdown files that also contain shortcodes. While the [default method](#example-1-markdown-file-default) works fine to render plain Markdown, shortcodes are not parsed. The only way to get this to work is to use Hugo pages. There are several ways to structure these include pages, so whatever you do, keep in mind that Hugo needs to be able to render and serve these files as regular pages! How it works:
1. First you need to create a directory **within** your content directory. For this example site `_includes` is used.
2. To prevent the theme from embedding the page in the navigation, create a file `_includes/_index.md` and add `geekdocHidden: true` to the front matter.
3. Place your Markdown files within the `_includes` folder e.g. `/_includes/include-page.md`. Make sure to name it `*.md`.
4. Include the page using `{{</* include file="/_includes/include-page.md" type="page" */>}}`.
Resulting structure should look like this:
```shell
_includes/
├── include-page.md
└── _index.md
```
{{< include file="/_includes/include-page.md" type="page" >}}
================================================
FILE: exampleSite/content/en/shortcodes/katex.md
================================================
---
title: KaTeX
# cspell:ignore infty
---
[KaTeX](https://katex.org/) shortcode let you render math typesetting in markdown document.
## Usage
```latex
{{</* katex [display] [class="text-center"] */>}}
f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
{{</* /katex */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-katex sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- cspell:disable -->
<!-- prettier-ignore -->
{{< katex display >}}
f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
{{< /katex >}}
<!-- cspell:enable -->
KaTeX can be used inline, for example {{< katex >}}\pi(x){{< /katex >}} or used with the `display` parameter as above.
================================================
FILE: exampleSite/content/en/shortcodes/mermaid.md
================================================
---
title: Mermaid
---
[Mermaid](https://mermaidjs.github.io/) is library for generating SVG charts and diagrams from text.
## Usage
<!-- prettier-ignore -->
```tpl
{{</* mermaid class="text-center" */>}}
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
alt is sick
Bob->>Alice: Not so good :(
else is well
Bob->>Alice: Feeling fresh like a daisy
end
opt Extra response
Bob->>Alice: Thanks for asking
end
{{</* /mermaid */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-mermaid sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- cspell:disable -->
<!-- prettier-ignore -->
{{< mermaid class="text-center" >}}
sequenceDiagram
Alice->>Bob: Hello Bob, how are you?
alt is sick
Bob->>Alice: Not so good :(
else is well
Bob->>Alice: Feeling fresh like a daisy
end
opt Extra response
Bob->>Alice: Thanks for asking
end
{{< /mermaid >}}
<!-- cspell:enable -->
As an alternative to shortcodes, code blocks can be used for markdown as well.
{{< columns >}}
<!-- prettier-ignore -->
````tpl
```mermaid
flowchart LR
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
```
````
<--->
<!-- cspell:disable -->
<!-- prettier-ignore -->
```mermaid
flowchart LR
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
```
<!-- cspell:enable -->
{{< /columns >}}
================================================
FILE: exampleSite/content/en/shortcodes/progress.md
================================================
---
title: Progress
---
A progress bar shows how far a process has progressed.
## Usage
<!-- prettier-ignore -->
```tpl
{{</* progress title=Eating value=65 icon=gdoc_heart */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-progress sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< progress title=Eating value=65 icon=gdoc_heart >}}
{{< progress title="Type: note" value=10 icon=gdoc_heart type=note >}}
{{< progress title="Type: tip" value=70 icon=gdoc_heart type=tip >}}
{{< progress title="Type: important" value=30 icon=gdoc_heart type=important >}}
{{< progress title="Type: caution" value=90 icon=gdoc_heart type=caution >}}
{{< progress title="Type: warning" value=80 icon=gdoc_heart type=warning >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
================================================
FILE: exampleSite/content/en/shortcodes/propertylist.md
================================================
---
title: Properties
---
The property list shortcode creates a custom HTML description list that can be used to display properties or variables and general dependent information. The shortcode requires a data file in `data/properties/`, e.g. `data/properties/demo.yaml`.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* propertylist name=demo (sort=name) (order=[asc|desc]) */>}}
```
<!-- prettier-ignore-end -->
The supported attributes can be taken from the following example:
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< include file="/data/properties/demo.yaml" language="Yaml" options="linenos=table" >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-buttons sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=demo sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
================================================
FILE: exampleSite/content/en/shortcodes/tabs.md
================================================
---
title: Tabs
---
Tabs let you organize content by context, for example installation instructions for each supported platform.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* tabs "uniqueid" */>}}
{{</* tab "macOS" */>}} # macOS Content {{</* /tab */>}}
{{</* tab "Linux" */>}} # Linux Content {{</* /tab */>}}
{{</* tab "Windows" */>}} # Windows Content {{</* /tab */>}}
{{</* /tabs */>}}
```
<!-- prettier-ignore-end -->
## Example
{{< tabs "uniqueid" >}}
{{< tab "macOS" >}}
## macOS
This is tab **macOS** content.
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad
prompts feud gait, quid exercise emeritus bis e. In pro quints consequent, denim
fastidious copious quo ad. Stet probates in duo.
{{< /tab >}}
{{< tab "Linux" >}}
## Linux
This is tab **Linux** content.
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad
prompts feud gait, quid exercise emeritus bis e. In pro quints consequent, denim
fastidious copious quo ad. Stet probates in duo.
{{< /tab >}}
{{< tab "Windows" >}}
## Windows
This is tab **Windows** content.
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates
investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad
prompts feud gait, quid exercise emeritus bis e. In pro quints consequent.
{{< /tab >}}
{{< /tabs >}}
================================================
FILE: exampleSite/content/en/shortcodes/toc-tree.md
================================================
---
title: ToC-Tree
---
The `toc-tree` shortcode will generate a Table of Content from a section file tree of your content directory. The root of the resulting ToC will be the page on which you define the shortcode.
## Usage
<!-- prettier-ignore-start -->
```tpl
{{</* toc-tree [sortBy="title"] */>}}
```
<!-- prettier-ignore-end -->
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-toc-tree sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
As said, the root will be the site on which the shortcode was used, you can see a demo including nesting in the [ToC Tree](/toc-tree/) section.
================================================
FILE: exampleSite/content/en/shortcodes/toc.md
================================================
---
title: ToC
---
Simple wrapper to generate a page Table of Content from a shortcode.
## Usage
<!-- prettier-ignore -->
```tpl
{{</* toc (format=[html|raw]) */>}}
```
### Attributes
<!-- prettier-ignore-start -->
<!-- cspell:disable -->
{{< propertylist name=shortcode-toc sort=name order=asc >}}
<!-- cspell:enable -->
<!-- prettier-ignore-end -->
## Example
{{< toc >}}
## Level 1
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts feud gait, quid exercise emeritus bis e. In pro quints consequent, denim fastidious copious quo ad. Stet probates in duo.
## Level 2
Amalia id per in minimum facility, quid facet modifier ea ma. Ill um select ma ad, en ferric patine sentient vim. Per expendable foreordained interpretations cu, maxim sole pertinacity in ram.
### Level 2.1
Amalia id per in minimum facility, quid facet modifier ea ma. Ill um select ma ad, en ferric patine sentient vim. Per expendable foreordained interpretations cu, maxim sole pertinacity in ram.
#### Level 2.1.1
Amalia id per in minimum facility, quid facet modifier ea ma. Ill um select ma ad, en ferric patine sentient vim.
##### Level 2.1.1.1
In pro quints consequent, denim fastidious copious quo ad.
###### Level 2.1.1.1.1
In pro quints consequent, denim fastidious copious quo ad.
### Level 2.2
Dolor sit, sumo unique argument um no. Gracie nominal id xiv. Romanesque acclimates investiture. Ornateness bland it ex enc, est yeti am bongo detract re. Pro ad prompts feud gait, quid exercise emeritus bis e.
Amalia id per in minimum facility, quid facet modifier ea ma. Ill um select ma ad, en ferric patine sentient vim. Per expendable foreordained interpretations cu, maxim sole pertinacity in ram.
================================================
FILE: exampleSite/content/en/toc-tree/_index.md
================================================
---
title: ToC-Tree
geekdocFlatSection: true
---
This is just a demo section for the <!-- cspell:disable -->[toc-tree](/shortcodes/toc-tree/)<!-- cspell:enable --> shortcode.
<!-- cspell:disable -->
{{< toc-tree >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/toc-tree/level-1/_index.md
================================================
---
geekdocCollapseSection: true
---
Level 1
<!-- cspell:disable -->
{{< toc-tree >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/toc-tree/level-1/level-1-1.md
================================================
---
title: Level 1.1
---
Level 1.1
================================================
FILE: exampleSite/content/en/toc-tree/level-1/level-1-2.md
================================================
---
title: Level 1.2
---
Level 1.2
================================================
FILE: exampleSite/content/en/toc-tree/level-1/level-1-3/_index.md
================================================
---
title: Level 1.3
---
Level 1.3
<!-- cspell:disable -->
{{< toc-tree >}}
<!-- cspell:enable -->
================================================
FILE: exampleSite/content/en/toc-tree/level-1/level-1-3/level-1-3-1.md
================================================
---
title: Level 1.3.1
---
Level 1.3.1
================================================
FILE: exampleSite/content/en/toc-tree/level-2/_index.md
================================================
Level-2
================================================
FILE: exampleSite/content/en/toc-tree/level-2/level-2-1.md
================================================
---
title: Level 2.1
---
Level 2.1
================================================
FILE: exampleSite/content/en/toc-tree/level-2/level-2-2.md
================================================
---
title: Level 2.2
---
Level 2.2
================================================
FILE: exampleSite/content/en/usage/_index.md
================================================
---
title: Usage
weight: -20
---
================================================
FILE: exampleSite/content/en/usage/configuration.md
================================================
---
title: Configuration
weight: -10
# cspell:ignore expirydate linktitle publishdate
---
{{< toc >}}
## Site configuration
{{< tabs "site-config" >}}
{{< tab "TOML" >}}
```toml
baseURL = "http://localhost"
title = "Geekdocs"
theme = "hugo-geekdoc"
# Required to get well formatted code blocks
pygmentsUseClasses = true
pygmentsCodeFences = true
disablePathToLower = true
enableGitInfo = true
# Required if you want to render robots.txt template
enableRobotsTXT = true
[markup]
[markup.goldmark.renderer]
# Needed for mermaid shortcode or when nesting shortcodes (e.g. img within
# columns or tabs)
unsafe = true
[markup.tableOfContents]
startLevel = 1
endLevel = 9
[taxonomies]
tag = "tags"
[params]
# (Optional, default none) Set a subtitle used in the page header.
geekdocSubtitle = "A Hugo theme for documentation"
# (Optional, default 6) Set how many table of contents levels to be showed on page.
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
# You can also specify this parameter per page in front matter.
geekdocToC = 3
# (Optional, default static/brand.svg) Set the path to a logo for the Geekdoc
# relative to your 'static/' folder.
geekdocLogo = "logo.png"
# (Optional, default false) Render menu from data file in 'data/menu/main.yaml'.
# See also https://geekdocs.de/usage/menus/#bundle-menu.
geekdocMenuBundle = true
# (Optional, default false) Collapse all menu entries, cannot be overwritten
# per page if enabled. Can be enabled per page via 'geekdocCollapseSection'.
geekdocCollapseAllSections = true
# (Optional, default true) Show page navigation links at the bottom of each docs page.
geekdocNextPrev = false
# (Optional, default true) Show a breadcrumb navigation bar at the top of each docs page.
# You can also specify this parameter per page in front matter.
geekdocBreadcrumb = false
# (Optional, default none) Set source repository location. Used for 'Edit page' links.
# You can also specify this parameter per page in front matter.
geekdocRepo = "https://github.com/thegeeklab/hugo"
# (Optional, default none) Enable 'Edit page' links. Requires 'geekdocRepo' param
# and the path must point to the parent directory of the 'content' folder.
# You can also specify this parameter per page in front matter.
geekdocEditPath = "edit/main/exampleSite"
# (Optional, default false) Show last modification date of the page in the header.
# Keep in mind that last modification date works best if `enableGitInfo` is set to true.
geekdocPageLastmod = true
# (Optional, default true) Enables search function with flexsearch.
# Index is built on the fly and might slow down your website.
geekdocSearch = false
# (Optional, default false) Display search results with the parent folder as prefix. This
# option allows you to distinguish between files with the same name in different folders.
# NOTE: This parameter only applies when 'geekdocSearch = true'.
geekdocSearchShowParent = true
# (Optional, default none) Add a link to your Legal Notice page to the site footer.
# It can be either a remote url or a local file path relative to your content directory.
geekdocLegalNotice = "https://blog.example.com/legal"
# (Optional, default none) Add a link to your Privacy Policy page to the site footer.
# It can be either a remote url or a local file path relative to your content directory.
geekdocPrivacyPolicy = "/privacy"
# (Optional, default true) Add an anchor link to headlines.
geekdocAnchor = true
# (Optional, default true) Copy anchor url to clipboard on click.
geekdocAnchorCopy = true
# (Optional, default true) Enable or disable image lazy loading for images rendered
# by the 'img' shortcode.
geekdocImageLazyLoading = true
# (Optional, default false) Set HTMl <base> to .Site.Home.Permalink if enabled. It might be required
# if a subdirectory is used within Hugo's BaseURL.
# See https://developer.mozilla.org/de/docs/Web/HTML/Element/base.
geekdocOverwriteHTMLBase = false
# (Optional, default true) Enable or disable the JavaScript based color theme toggle switch. The CSS based
# user preference mode still works.
geekdocDarkModeToggle = false
# (Optional, default false) Auto-decrease brightness of images and add a slightly grayscale to avoid
# bright spots while using the dark mode.
geekdocDarkModeDim = false
# (Optional, default false) Enforce code blocks to always use the dark color theme.
geekdocDarkModeCode = false
# (Optional, default true) Display a "Back to top" link in the site footer.
geekdocBackToTop = true
# (Optional, default false) Enable or disable adding tags for post pages automatically to the navigation sidebar.
geekdocTagsToMenu = true
# (Optional, default 'title') Configure how to sort file-tree menu entries. Possible options are 'title', 'linktitle',
# 'date', 'publishdate', 'expirydate' or 'lastmod'. Every option can be used with a reverse modifier as well
# e.g. 'title_reverse'.
geekdocFileTreeSortBy = "title"
# (Optional, default none) Adds a "Content licensed under <license>" line to the footer.
# Could be used if you want to define a default license for your content.
[params.geekdocContentLicense]
name = "CC BY-SA 4.0"
link = "https://creativecommons.org/licenses/by-sa/4.0/"
```
{{< /tab >}}
{{< tab "YAML" >}}
```yaml
---
baseURL: "http://localhost"
title: "Geekdocs"
theme: "hugo-geekdoc"
# Required to get well formatted code blocks
pygmentsUseClasses: true
pygmentsCodeFences: true
disablePathToLower: true
enableGitInfo: true
# Required if you want to render robots.txt template
enableRobotsTXT: true
markup:
goldmark:
# Needed for mermaid shortcode or when nesting shortcodes (e.g. img within
# columns or tabs)
renderer:
unsafe: true
tableOfContents:
startLevel: 1
endLevel: 9
taxonomies:
tag: tags
params:
# (Optional, default none) Set a subtitle used in the page header.
geekdocSubtitle: "A Hugo theme for documentation"
# (Optional, default 6) Set how many table of contents levels to be showed on page.
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
# You can also specify this parameter per page in front matter.
geekdocToC: 3
# (Optional, default static/brand.svg) Set the path to a logo for the Geekdoc
# relative to your 'static/' folder.
geekdocLogo: logo.png
# (Optional, default false) Render menu from data file in 'data/menu/main.yaml'.
# See also https://geekdocs.de/usage/menus/#bundle-menu.
geekdocMenuBundle: true
# (Optional, default false) Collapse all menu entries, cannot be overwritten
# per page if enabled. Can be enabled per page via 'geekdocCollapseSection'.
geekdocCollapseAllSections: true
# (Optional, default true) Show page navigation links at the bottom of each docs page.
geekdocNextPrev: false
# (Optional, default true) Show a breadcrumb navigation bar at the top of each docs page.
# You can also specify this parameter per page in front matter.
geekdocBreadcrumb: false
# (Optional, default none) Set source repository location. Used for 'Edit page' links.
# You can also specify this parameter per page in front matter.
geekdocRepo: "https://github.com/thegeeklab/hugo-geekdoc"
# (Optional, default none) Enable 'Edit page' links. Requires 'geekdocRepo' param
# and the path must point to the parent directory of the 'content' folder.
# You can also specify this parameter per page in front matter.
geekdocEditPath: edit/main/exampleSite
# (Optional, default false) Show last modification date of the page in the header.
# Keep in mind that last modification date works best if `enableGitInfo` is set to true.
geekdocPageLastmod: true
# (Optional, default true) Enables search function with flexsearch.
# Index is built on the fly and might slow down your website.
geekdocSearch: false
# (Optional, default false) Display search results with the parent folder as prefix. This
# option allows you to distinguish between files with the same name in different folders.
# NOTE: This parameter only applies when 'geekdocSearch: true'.
geekdocSearchShowParent: true
# (Optional, default none) Add a link to your Legal Notice page to the site footer.
# It can be either a remote url or a local file path relative to your content directory.
geekdocLegalNotice: "https://blog.example.com/legal"
# (Optional, default none) Add a link to your Privacy Policy page to the site footer.
# It can be either a remote url or a local file path relative to your content directory.
geekdocPrivacyPolicy: "/privacy"
# (Optional, default true) Add an anchor link to headlines.
geekdocAnchor: true
# (Optional, default true) Copy anchor url to clipboard on click.
geekdocAnchorCopy: true
# (Optional, default true) Enable or disable image lazy loading for images rendered
# by the 'img' shortcode.
geekdocImageLazyLoading: true
# (Optional, default false) Set HTMl <base> to .Site.Home.Permalink if enabled. It might be required
# if a subdirectory is used within Hugo's BaseURL.
# See https://developer.mozilla.org/de/docs/Web/HTML/Element/base.
geekdocOverwriteHTMLBase: false
# (Optional, default true) Enable or disable the JavaScript based color theme toggle switch. The CSS based
# user preference mode still works.
geekdocDarkModeToggle: false
# (Optional, default false) Auto-decrease brightness of images and add a slightly grayscale to avoid
# bright spots while using the dark mode.
geekdocDarkModeDim: false
# (Optional, default false) Enforce code blocks to always use the dark color theme.
geekdocDarkModeCode: false
# (Optional, default true) Display a "Back to top" link in the site footer.
geekdocBackToTop: true
# (Optional, default false) Enable or disable adding tags for post pages automatically to the navigation sidebar.
geekdocTagsToMenu: true
# (Optional, default 'title') Configure how to sort file-tree menu entries. Possible options are 'title', 'linktitle',
# 'date', 'publishdate', 'expirydate' or 'lastmod'. Every option can be used with a reverse modifier as well
# e.g. 'title_reverse'.
geekdocFileTreeSortBy: "title"
# (Optional, default none) Adds a "Content licensed under <license>" line to the footer.
# Could be used if you want to define a default license for your content.
geekdocContentLicense:
name: CC BY-SA 4.0
link: https://creativecommons.org/licenses/by-sa/4.0/
```
{{< /tab >}}
{{< /tabs >}}
## Page configuration
{{< tabs "page-config" >}}
{{< tab "TOML" >}}
```toml
# Set type to 'posts' if you want to render page as blogpost
type = "posts"
# Hugo predefined front matter variable, to re-arrange items in file-tree menu
# See weights section of
# https://gohugo.io/content-management/front-matter/#predefined
weight = 10
# Set how many table of contents levels to be showed on page.
geekdocToC = 3
# Set a description for the current page. This will be shown in toc-trees objects.
geekdocDescription =
# Set false to hide the whole left navigation sidebar. Beware that it will make
# navigation pretty hard without adding some kind of on-page navigation.
geekdocNav = true
# Show a breadcrumb navigation bar at the top of each docs page.
geekdocBreadcrumb = false
# Set source repository location.
geekdocRepo = "https://github.com/thegeeklab/hugo-geekdoc"
# Enable 'Edit page' links. Requires 'geekdocRepo' param and the path must point to
# the parent directory of the 'content' folder.
geekdocEditPath = "edit/main/exampleSite"
# Show last modification date of the page in the header.
geekdocPageLastmod = true
# Used for 'Edit page' link, set to '.File.Path' by default.
# Can be overwritten by a path relative to 'geekdocEditPath'
geekdocFilePath =
# Set to mark page as flat section (file-tree menu only).
geekdocFlatSection = true
# Set true to hide page or section from side menu (file-tree menu only).
geekdocHidden = true
# Set false to show this page as a file-tree menu entry when you want it to be hidden in the sidebar.
# NOTE: Only applies when 'geekdocHidden = true'.
geekdocHiddenTocTree = true
# Set to true to make a section foldable in side menu.
geekdocCollapseSection = true
# Add an anchor link to headlines.
geekdocAnchor = true
# If you have protected some pages with e.g. basic authentication you may want to exclude these pages
# from data file, otherwise, information may be leaked. Setting this parameter to 'true' will exclude the
# page from search data, feeds, etc.
# WARNING: Consider hosting a standalone, fully auth-protected static page for secret information instead!
geekdocProtected = false
# Set 'left' (default), 'center' or 'right' to configure the text align of a page.
geekdocAlign = "left"
```
{{< /tab >}}
{{< tab "YAML" >}}
```yaml
# Set type to 'posts' if you want to render page as blogpost.
type: "posts"
# Set page weight to re-arrange items in file-tree menu.
weight: 10
# Set how many table of contents levels to be showed on page.
geekdocToC: 3
# Set a description for the current page. This will be shown in toc-trees objects.
geekdocDescription:
# Set false to hide the whole left navigation sidebar. Beware that it will make
# navigation pretty hard without adding some kind of on-page navigation.
geekdocNav: true
# Show a breadcrumb navigation bar at the top of each docs page.
geekdocBreadcrumb: false
# Set source repository location.
geekdocRepo: "https://github.com/thegeeklab/hugo-geekdoc"
# Enable 'Edit page' links. Requires 'geekdocRepo' param and the path must point to
# the parent directory of the 'content' folder.
geekdocEditPath: "edit/main/exampleSite"
# Show last modification date of the page in the header.
geekdocPageLastmod: true
# Used for 'Edit page' link, set to '.File.Path' by default.
# Can be overwritten by a path relative to 'geekdocEditPath'
geekdocFilePath:
# Set to mark page as flat section (file-tree menu only).
geekdocFlatSection: true
# Set true to hide page or section from side menu (file-tree menu only).
geekdocHidden: true
# Set false to show this page as a file-tree menu entry when you want it to be hidden in the sidebar.
# NOTE: Only applies when 'geekdocHidden: true'.
geekdocHiddenTocTree: true
# Set to true to make a section foldable in side menu.
geekdocCollapseSection: true
# Add an anchor link to headlines.
geekdocAnchor: true
# If you have protected some pages with e.g. basic authentication you may want to exclude these pages
# from data file, otherwise, information may be leaked. Setting this parameter to 'true' will exclude the
# page from search data, feeds, etc.
# WARNING: Consider hosting a standalone, fully auth-protected static page for secret information instead!
geekdocProtected: false
# Set 'left' (default), 'center' or 'right' to configure the text align of a page.
geekdocAlign: "left"
```
{{< /tab >}}
{{< /tabs >}}
================================================
FILE: exampleSite/content/en/usage/customization.md
================================================
---
title: Customization
---
{{< toc >}}
## Custom resources
To add custom resources to your site e.g. CSS or JavaScript files, create the `layouts/partials/head/custom.html` in the root directory of your project. Add the source files you want to include in the `static/` folder of your project, for example `static/css/custom.css` and `static/js/custom.js`. To include the files in your site, add the following code to `layouts/partials/head/custom.html`:
```html
<link rel="stylesheet" type="text/css" href="/css/custom.css" />
<script type="text/javascript" src="/js/custom.js"></script>
```
Ensure to use the absolute path to the files.
================================================
FILE: exampleSite/content/en/usage/getting-started.md
================================================
---
title: Getting Started
weight: -20
# cspell:ignore demosite testlink gohugoio
---
This page tells you how to get started with the Geekdoc theme, including installation and basic configuration.
<!--more-->
{{< toc >}}
## Install requirements
You need a recent version of Hugo for local builds and previews of sites that use Geekdoc. As we are using [webpack](https://webpack.js.org/) as pre-processor, the normal version of Hugo is sufficient. If you prefer the extended version of Hugo anyway this will work as well. For comprehensive Hugo documentation, see [gohugo.io](https://gohugo.io/documentation/).
If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `webpack` locally and run the build script once to create all required assets.
```shell
# install required packages from package.json
npm install
# run the build script to build required assets
npm run build
# build release tarball
npm run pack
```
## Using the theme
To prepare your new site environment just a few steps are required:
1. Create a new empty Hugo site.
```shell
hugo new site demosite
```
2. Switch to the root of the new site.
```shell
cd demosite
```
3. Install the Geekdoc theme from a [release bundle](#option-1-download-pre-build-release-bundle) (recommended) or from [Git branch](#option-2-clone-the-github-repository).
4. Create the minimal required Hugo configuration `hugo.toml`. For all configuration options take a look at the [configuration page](/usage/configuration/).
```toml
baseURL = "http://localhost"
title = "Geekdocs"
theme = "hugo-geekdoc"
pluralizeListTitles = false
# Geekdoc required configuration
pygmentsUseClasses = true
pygmentsCodeFences = true
disablePathToLower = true
# Required if you want to render robots.txt template
enableRobotsTXT = true
# Needed for mermaid shortcodes
[markup]
[markup.goldmark.renderer]
# Needed for mermaid shortcode or when nesting shortcodes (e.g. img within
# columns or tabs)
unsafe = true
[markup.tableOfContents]
startLevel = 1
endLevel = 9
[taxonomies]
tag = "tags"
```
5. Test your site.
```shell
hugo server -D
```
The `-D` or `--buildDrafts` option is used to include content marked as draft during the build. It is used because content pages created with the `hugo new content` command have the `draft` flag set by default and this can lead to build errors in newly created projects. For projects with a production-ready content structure, this flag is not required in most cases and can be omitted.
### Option 1: Download pre-build release bundle
Download and extract the latest release bundle into the theme directory.
```shell
mkdir -p themes/hugo-geekdoc/
curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/latest/download/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1
```
### Option 2: Clone the GitHub repository
{{< hint type=note >}}
Keep in mind this method is not recommended and needs some extra steps to get it working.
If you want to use the Theme as submodule keep in mind that your build process need to
run the described steps as well.
{{< /hint >}}
Clone the Geekdoc git repository.
```shell
git clone https://github.com/thegeeklab/hugo-geekdoc.git themes/hugo-geekdoc
```
Build required theme assets e.g. CSS files and SVG sprites.
```shell
npm install
npm run build
```
## Deployments
### Netlify
There are several ways to deploy your site with this theme on Netlify. Regardless of which solution you choose, the main goal is to ensure that the prebuilt theme release tarball is used or to run the [required commands](#option-2-clone-the-github-repository) to prepare the theme assets before running the Hugo build command.
Here are some possible solutions:
#### Use a Makefile
Add a Makefile to your repository to bundle the required steps.
{{< hint type=important >}}
The `Makefile` is only an example. Depending on your project structure, `BASEDIR` or `THEMEDIR` may need to be adapted.
{{< /hint >}}
```makefile
# Please change the theme version to the latest release version.
THEME_VERSION := v0.44.1
THEME := hugo-geekdoc
BASEDIR := docs
THEMEDIR := $(BASEDIR)/themes
.PHONY: doc
doc: doc-assets doc-build
.PHONY: doc-assets
doc-assets:
mkdir -p $(THEMEDIR)/$(THEME)/ ; \
curl -sSL "https://github.com/thegeeklab/$(THEME)/releases/download/${THEME_VERSION}/$(THEME).tar.gz" | tar -xz -C $(THEMEDIR)/$(THEME)/ --strip-components=1
.PHONY: doc-build
doc-build:
cd $(BASEDIR); hugo
.PHONY: clean
clean:
rm -rf $(THEMEDIR) && \
rm -rf $(BASEDIR)/public
```
This Makefile can be used in your `netlify.toml`, take a look at the [Netlify example](https://docs.netlify.com/configure-builds/file-based-configuration/#sample-netlify-toml-file) for more information:
```toml
[build]
publish = "docs/public"
command = "make doc"
```
#### Chain required commands
Chain all required commands to prepare the theme and build your site on the `command` option in your `netlify.toml` like this:
```toml
[build]
publish = "docs/public"
command = "command1 && command 2 && command3 && hugo"
```
### Subdirectories
{{< hint type=important >}}
As deploying Hugo sites on subdirectories is not as robust as on subdomains, we do not recommend this.
If you have a choice, using a domain/subdomain should always be the preferred solution!
{{< /hint >}}
If you want to deploy your site to a subdirectory of your domain, some extra steps are required:
- Configure your Hugo base URL e.g. `baseURL = http://localhost/demo/`.
- Don't use `relativeURLs: false` nor `canonifyURLs: true` as is can cause unwanted side effects!
There are two ways to get Markdown links or images working:
- Use the absolute path including your subdirectory e.g. `[testlink](/demo/example-site)`
- Overwrite the HTML base in your site configuration with `geekdocOverwriteHTMLBase = true` and use the relative path e.g. `[testlink](example-site)`
But there is another special case if you use `geekdocOverwriteHTMLBase = true`. If you use anchors in your Markdown links you have to ensure to always include the page path. As an example `[testlink](#some-anchor)` will resolve to `http://localhost/demo/#some-anchor` and not automatically include the current page!
## Known Limitations
### Minify HTML results in spacing issues
Using `hugo --minify` without further configuration or using other minify tools that also minify HTML files might result in spacing issues in the theme and is **not** supported.
After some testing we decided to not spend effort to fix this issue for now as the benefit is very low. There are some parts of the theme where spaces between HTML elements matters but were stripped by minify tools. Some of these issues are related to <!-- cspell:disable -->[gohugoio/hugo#6892](https://github.com/gohugoio/hugo/issues/6892).<!-- cspell:enable --> While recommendation like "don't depend on whitespace in your layout" sounds reasonable, it seems to be not that straight forward especially for something like embedded icons into the text flow.
If you still want to use Hugo's minify flag you should at least exclude HTML files in your site configuration as described in the [Hugo documentation](https://gohugo.io/getting-started/configuration/#configure-minify):
```toml
[minify]
disableHTML = true
```
================================================
FILE: exampleSite/content/en/usage/menus.md
================================================
---
title: Menus
---
The theme supports two different kinds of menus. File-tree menu is the default one and does not require further configuration to work. If you want full control about your menu the bundle menu is a powerful option to accomplish it.
{{< toc >}}
## File-tree menu
As the name already suggests, the file tree menu builds a menu from the file system structure of the content folder. By default, areas and subareas are sorted alphabetically by the title of the pages. To manipulate the order the `weight` parameter in a page [front matter](https://gohugo.io/content-management/front-matter/) can be used. To structure your content folder you have to use [page bundles](https://gohugo.io/content-management/organization/#page-bundles), single files are **not** supported. Hugo will render build single files in the content folder just fine but it will not be added to the menu.
**Example:**
File system structure:
```plain
content/
├── level-1
│ ├── _index.md
│ ├── level-1-1.md
│ ├── level-1-2.md
│ └── level-1-3
│ ├── _index.md
│ └── level-1-3-1.md
└── level-2
├── _index.md
├── level-2-1.md
└── level-2-2.md
```
## Bundle menu
This type of navigation needs to be enabled first by setting `geekdocMenuBundle` to `true` in your [site configuration](/usage/configuration/#site-configuration). After you have activated the bundle menu, you start with an empty navigation. This is intentional because bundle menus have to be defined manually in a data file. While this increases the effort it also offers maximum flexibility in the design. The data file needs to be written in YAML and placed at `data/menu/main.yaml`.
**Example:**
```yaml
---
main:
- name: Level 1
ref: "/level-1"
icon: "gdoc_notification"
sub:
- name: Level 1.1
ref: "/level-1/level-1-1"
- name: Level 1.2
ref: "/level-1/level-1-2"
- name: Level 1.3
ref: "/level-1/level-1-3"
sub:
- name: Level 1.3.1
ref: "/level-1/level-1-3/level-1-3-1"
- name: Level 2
ref: "/level-2"
sub:
- name: Level 2.1
ref: "/level-2/level-2-1"
- name: Level 2.2
ref: "/level-2/level-2-2"
- name: Level 2.2 Anchor
ref: /level-2/level-2-2
# Anchor to add to the entry. This example will result in `/level-2/level-2-2/#anchor`
anchor: anchor
```
As an advantage you can add [icons](/features/icon-sets/) to your menu entries e.g. `icon: "gdoc_notification"`.
### More menu
{{< hint type=tip >}}
**Tip**\
The more menu is special type of the bundle menu and can be combined with the default file-tree menu.
{{< /hint >}}
As this is a special type of the bundle menu it is basically working in the same way. To enable it just add a data file to `data/menu/more.yaml`. The more menu will also work with the file-tree menu and therefore **don't need to be enabled** by the `geekdocMenuBundle` parameter.
**Example:**
```yaml
---
more:
- name: News
ref: "/#"
icon: "gdoc_notification"
- name: Releases
ref: "https://github.com/thegeeklab/hugo-geekdoc/releases"
external: true
icon: "gdoc_download"
- name: "View Source"
ref: "https://github.com/thegeeklab/hugo-geekdoc"
external: true
icon: "gdoc_github"
```
## Extra Header Menu
If you want to customize the header menu, this can be achieved by using a data file written in YAML and placed at `data/menu/extra.yaml`.
**Example:**
```yaml
---
header:
- name: GitHub
ref: https://github.com/thegeeklab/hugo-geekdoc
icon: gdoc_github
external: true
```
================================================
FILE: exampleSite/data/menu/extra.yaml
================================================
---
header:
- name: GitHub
ref: https://github.com/thegeeklab/hugo-geekdoc
icon: gdoc_github
external: true
================================================
FILE: exampleSite/data/menu/main.yaml
================================================
---
main:
- name:
en: Level 1 (EN)
de: Level 1 (DE)
sub:
- name:
en: Level 1.1 (EN)
de: Level 1.1 (DE)
ref: "/toc-tree/level-1/level-1-1"
rel: me
- name: Level 1.2
ref: "/toc-tree/level-1/level-1-2"
- name: Level 1.3
ref: "/toc-tree/level-1/level-1-3"
sub:
- name: Level 1.3.1
ref: "/toc-tree/level-1/level-1-3/level-1-3-1"
- name: Level 2
ref: "/toc-tree/level-2"
sub:
- name: Level 2.1
ref: "/toc-tree/level-2/level-2-1"
- name: Level 2.2
ref: "/toc-tree/level-2/level-2-2"
================================================
FILE: exampleSite/data/menu/more.yaml
================================================
---
more:
- name: News
ref: "/posts"
icon: "gdoc_notification"
- name: Releases
ref: "https://github.com/thegeeklab/hugo-geekdoc/releases"
external: true
icon: "gdoc_download"
- name: View Source
ref: "https://github.com/thegeeklab/hugo-geekdoc"
external: true
icon: "gdoc_github"
================================================
FILE: exampleSite/data/properties/demo.yaml
================================================
---
properties:
- name: prop1
type: string
description: Dummy description of the prop1 string property.
required: true
- name: prop2
type: int
defaultValue: 10
description:
en: Another description for the integer property called prop2.
required: false
tags:
en:
- tag1
- tag2
- name: prop3
type: bool
defaultValue: false
description: |
A `bool` property with a complex multiline description and embedded Markdown:
- List item 1
- List item 2
More description how to use this property.
required: false
- name: a-prop
type: string
description: Property to demonstrate sorting.
required: true
================================================
FILE: exampleSite/data/properties/shortcode-audio.yaml
================================================
---
properties:
- name: name
type: string
description: Name of the audio resource defined in page front matter.
required: true
================================================
FILE: exampleSite/data/properties/shortcode-avatar.yaml
================================================
---
properties:
- name: name
type: string
description: Name of the image resource defined in page front matter.
required: true
- name: alt
type: string
description: Description text for the image.
required: false
- name: size
type: string
description: Thumbnail size. Supported values are `origin|tiny|small|medium|large`.
required: false
- name: anchor
type: string
description: "[Anchor](https://gohugo.io/content-management/image-processing/#anchor) to determine the placement of the crop box."
required: false
================================================
FILE: exampleSite/data/properties/shortcode-buttons.yaml
================================================
---
properties:
- name: href
type: string
description: The URL to use as target of the button.
required: false
- name: relref
type: string
description: Executes the [relref](https://gohugo.io/functions/urls/relref/) Hugo function to resolve the relative permalink of the specified page. The result is set as the target of the button.
required: false
- name: class
type: list
description: List of space-separated CSS class names to apply.
required: false
- name: size
type: string
description: Preset of different button sizes. Supported values are `regular|large`.
required: false
defaultValue: regular
================================================
FILE: exampleSite/data/properties/shortcode-columns.yaml
================================================
---
properties:
- name: size
type: string
description: Preset of different sizes for the _first_ column. Supported values are `small|regular|large`.
required: false
defaultValue: regular
================================================
FILE: exampleSite/data/properties/shortcode-hints.yaml
================================================
---
properties:
- name: type
type: string
description: Type of the hint. Supported values are `note|tip|important|caution|warning`.
required: false
defaultValue: note
- name: icon
type: string
description: Icon to use. The value need to be an icon from an [SVG sprite](/features/icon-sets/).
required: false
- name: title
type: string
description: Title text of the hint.
required: false
================================================
FILE: exampleSite/data/properties/shortcode-images.yaml
================================================
---
properties:
- name: name
type: string
description: Name of the image resource defined in page front matter.
required: true
- name: alt
type: string
description: Description text for the image.
required: false
- name: size
type: string
description: Thumbnail size. Supported values are `origin|tiny|small|medium|large`.
required: false
- name: lazy
type: bool
description: Enable/disable lazy loading for the image.
required: false
defaultValue: true
================================================
FILE: exampleSite/data/properties/shortcode-includes.yaml
================================================
---
properties:
- name: file
type: string
description: Path of the file (relative to the Hugo root) to include.
required: true
- name: language
type: string
description: Language for [syntax highlighting](https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages).
required: false
- name: type
type: string
description: Special include type. Supported values are `html|page`. If not set the included file is rendered as markdown.
required: false
- name: options
type: bool
description: highlighting [options](https://gohugo.io/content-management/syntax-highlighting/#highlight-shortcode).
required: false
defaultValue: linenos=table
================================================
FILE: exampleSite/data/properties/shortcode-katex.yaml
================================================
---
properties:
- name: class
type: list
description: List of space-separated CSS class names to apply.
required: false
================================================
FILE: exampleSite/data/properties/shortcode-mermaid.yaml
================================================
---
properties:
- name: class
type: list
description: List of space-separated CSS class names to apply.
required: false
================================================
FILE: exampleSite/data/properties/shortcode-progress.yaml
================================================
---
properties:
- name: type
type: string
description: Color type of the progress bar. Supported values are `main|note|tip|important|caution|warning`.
required: false
defaultValue: main
- name: value
type: integer
description: Progress value.
required: false
defaultValue: 0
- name: label
type: string
description: Value to display.
required: false
defaultValue: "`value`"
- name: icon
type: string
description: Icon to use. The value need to be an icon from an [SVG sprite](/features/icon-sets/).
required: false
- name: title
type: string
description: Title text of the progress bar.
required: false
================================================
FILE: exampleSite/data/properties/shortcode-propertylist.yaml
================================================
---
properties:
- name: name
type: string
description: Name of the file from the `data/properties/` directory.
required: true
- name: sort
type: string
description: Field name to use for sorting.
required: false
- name: order
type: string
description: Sort order, only applied if `sort` is set. Supported values are `asc|desc`.
required: false
defaultValue: asc
================================================
FILE: exampleSite/data/properties/shortcode-toc-tree.yaml
================================================
---
properties:
- name: sortBy
type: string
description: |
Override the default sort parameter set by [`geekdocFileTreeSortBy`](/usage/configuration/#site-configuration).
required: false
defaultValue: .Site.Params.geekdocFileTreeSortBy
================================================
FILE: exampleSite/data/properties/shortcode-toc.yaml
================================================
---
properties:
- name: format
type: string
description: |
Format of the returned ToC. The `html` format creates an HTML wrapper to enable the `geekdocToC` parameter that limits
the maximum ToC level to be displayed. This variant also automatically inserts a horizontal line after the ToC. The `raw` format
returns the unformatted ToC, the parameter `geekdocToC` does not work in this mode. Supported values are `html|raw`.
required: false
defaultValue: html
================================================
FILE: exampleSite/layouts/shortcodes/sprites.html
================================================
<div class="flex flex-wrap justify-center">
{{ range $key, $value := hugo.Data.sprites.geekdoc }}
<div class="flex flex-grid icon-grid">
<div class="flex align-center justify-center icon-grid__line">
<svg class="gdoc-icon {{ $key }}"><use xlink:href="#{{ $key }}"></use></svg>
</div>
<div class="flex align-center justify-center icon-grid__line icon-grid__line--text">
<span>#{{ (replace $key "_" "_<wbr>") | safeHTML }}</span>
</div>
</div>
{{ end }}
</div>
================================================
FILE: exampleSite/static/.htaccess
================================================
ErrorDocument 404 /404.html
ExpiresActive On
ExpiresDefault "access plus 600 seconds"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 week"
ExpiresByType application/x-font-woff "access plus 1 week"
ExpiresByType application/font-woff2 "access plus 1 week"
================================================
FILE: exampleSite/static/_includes/example.html.part
================================================
<p>
<i><b>Example HTML include</b></i>
</p>
<h4>This is heading 4</h4>
<h5>This is heading 5</h5>
<h6>This is heading 6</h6>
================================================
FILE: exampleSite/static/_includes/example.md.part
================================================
_**Example Markdown include**_
File including a simple Markdown table.
| Head 1 | Head 2 | Head 3 |
| ------ | ------ | ------ |
| 1 | 2 | 3 |
================================================
FILE: exampleSite/static/custom.css
================================================
:root {
--code-max-height: 60rem;
}
.icon-grid {
width: 8rem;
height: 8rem;
margin: 0.2em;
text-align: center;
padding: 0.3em;
}
.icon-grid__line {
height: 4rem;
}
.icon-grid__line .gdoc-icon {
width: 3em;
height: 3em;
}
.icon-grid__line--text {
font-size: 0.8em;
}
================================================
FILE: exampleSite/static/custom.css.example
================================================
/* Global customization */
:root {
--code-max-height: 60rem;
--header-font-family: "DancingScript";
--body-font-family: "DancingScript";
--code-font-family: "DancingScript";
}
/* Light mode theming */
:root,
:root[color-theme="light"] {
--header-background: #4ec58a;
--header-font-color: #ffffff;
--body-background: #ffffff;
--body-font-color: #343a40;
--mark-color: #ffab00;
--button-background: #62cb97;
--button-border-color: #4ec58a;
--link-color: #518169;
--link-color-visited: #c54e8a;
--code-background: #f5f6f8;
--code-accent-color: #e3e7eb;
--code-accent-color-lite: #eff1f3;
--code-font-color: #5f5f5f;
--code-copy-background: #f5f6f8;
--code-copy-font-color: #6b7784;
--code-copy-border-color: #adb4bc;
--code-copy-success-color: #00c853;
--accent-color: #e9ecef;
--accent-color-lite: #f8f9fa;
--control-icons: #b2bac1;
--footer-background: #112b3c;
--footer-font-color: #ffffff;
--footer-link-color: #ffcc5c;
--footer-link-color-visited: #ffcc5c;
}
@media (prefers-color-scheme: light) {
:root {
--header-background: #4ec58a;
--header-font-color: #ffffff;
--body-background: #ffffff;
--body-font-color: #343a40;
--mark-color: #ffab00;
--button-background: #62cb97;
--button-border-color: #4ec58a;
--link-color: #518169;
--link-color-visited: #c54e8a;
--code-background: #f5f6f8;
--code-accent-color: #e3e7eb;
--code-accent-color-lite: #eff1f3;
--code-font-color: #5f5f5f;
--code-copy-background: #f5f6f8;
--code-copy-font-color: #6b7784;
--code-copy-border-color: #adb4bc;
--code-copy-success-color: #00c853;
--accent-color: #e9ecef;
--accent-color-lite: #f8f9fa;
--control-icons: #b2bac1;
--footer-background: #112b3c;
--footer-font-color: #ffffff;
--footer-link-color: #ffcc5c;
--footer-link-color-visited: #ffcc5c;
}
}
/* Dark mode theming */
:root[color-theme="dark"] {
--header-background: #4ec58a;
--header-font-color: #ffffff;
--body-background: #343a40;
--body-font-color: #ced3d8;
--mark-color: #ffab00;
--button-background: #62cb97;
--button-border-color: #4ec58a;
--link-color: #7ac29e;
--link-color-visited: #c27a9e;
--code-background: #2f353a;
--code-accent-color: #262b2f;
--code-accent-color-lite: #2b3035;
--code-font-color: #b9b9b9;
--code-copy-background: #343a40;
--code-copy-font-color: #6b7784;
--code-copy-border-color: #6b7784;
--code-copy-success-color: #37905c;
--accent-color: #2b3035;
--accent-color-lite: #2f353a;
--control-icons: #b2bac1;
--footer-background: #112b3c;
--footer-font-color: #ffffff;
--footer-link-color: #ffcc5c;
--footer-link-color-visited: #ffcc5c;
}
@media (prefers-color-scheme: dark) {
:root {
--header-background: #4ec58a;
--header-font-color: #ffffff;
--body-background: #343a40;
--body-font-color: #ced3d8;
--mark-color: #ffab00;
--button-background: #62cb97;
--button-border-color: #4ec58a;
--link-color: #7ac29e;
--link-color-visited: #c27a9e;
--code-background: #2f353a;
--code-accent-color: #262b2f;
--code-accent-color-lite: #2b3035;
--code-font-color: #b9b9b9;
--code-copy-background: #343a40;
--code-copy-font-color: #6b7784;
--code-copy-border-color: #6b7784;
--code-copy-success-color: #37905c;
--accent-color: #2b3035;
--accent-color-lite: #2f353a;
--control-icons: #b2bac1;
--footer-background: #112b3c;
--footer-font-color: #ffffff;
--footer-link-color: #ffcc5c;
--footer-link-color-visited: #ffcc5c;
}
}
@font-face {
font-family: "DancingScript";
src:
url("fonts/DancingScript.woff2") format("woff2"),
url("fonts/DancingScript.woff") format("woff");
font-weight: normal;
font-style: normal;
font-display: swap;
}
================================================
FILE: i18n/am.yaml
================================================
---
edit_page: ገጹን ማስተካከያ
nav_navigation: መሄጃ
nav_tags: መለያዎች
nav_more: ተጨማሪ
nav_top: ወደ ላይ ተመለስ
form_placeholder_search: ፈልግ
error_page_title: ጠፋብዎት? አይጨነቁ።
error_message_title: ጠፋብዎት?
error_message_code: አልተገኘም
error_message_text: >
ገጹን ማግኘት አልተቻለም፤ ነገር ግን አይጨነቁ፤ በዚህ <a class="gdoc-error__link" href="{{ . }}">ገጽ</a> መመለስ ይችላሉ።
button_toggle_dark: ብሩህ/ጨለማ መቀያየሪያ
button_nav_open: መሄጃውን ክፈት
button_nav_close: መሄጃውን ዝጋ
button_menu_open: ምርጫዎችን ክፈት
button_menu_close: ምርጫዎችን ዝጋ
button_homepage: ወደ መጀመሪያ ገጽ ተመለስ
title_anchor_prefix: "ማያያዣ ወደ:"
posts_read_more: ሙሉውን ያንብቡ
posts_read_time:
one: "ለማንበብ አንድ ደቂቃ"
other: "{{ . }} ደቂቃዎች ለማንበብ"
posts_update_prefix: መጨረሻ የዘመነው
posts_count:
one: "አንድ ጽሑፍ"
other: "{{ . }} ጽሑፎች"
posts_tagged_with: ከ '{{ . }}' ጋር የተዛመዱ ጽሑፎች በሙሉ
footer_build_with: >
በ <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> የተገነባ ከ
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg> ጋር
footer_legal_notice: ሕጋዊ መረጃዎች
footer_privacy_policy: ስለ መረጃዎ አያያዝ ያለን አቋም
footer_content_license_prefix: >
ስለ ይዘቱ ባለመብትነት መረጃ
language_switch_no_translation_prefix: "ያልተተረጐመ ገጽ:"
propertylist_required: ግድ የሚያስፈልግ
propertylist_optional: ግድ ያልሆነ
propertylist_default: በባዶ ፈንታ
pagination_page_prev: ያለፈው
pagination_page_next: ቀጣይ
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/cs.yaml
================================================
---
edit_page: Upravit stránku
nav_navigation: Navigace
nav_tags: Tagy
nav_more: Více
nav_top: Zpět nahoru
form_placeholder_search: Vyhledat
error_page_title: Ztracen? Nic se neděje
error_message_title: Ztracen?
error_message_code: Error 404
error_message_text: >
Vypadá to že stránka, kterou hledáte, neexistuje. Nemějte obavy, můžete
se vrátit zpět na <a class="gdoc-error__link" href="{{ . }}">domovskou stránku</a>.
button_toggle_dark: Přepnout tmavý/světlý/automatický režim
button_nav_open: Otevřít navigaci
button_nav_close: Zavřít navigaci
button_menu_open: Otevřít lištu nabídky
button_menu_close: Zavřít lištu nabídky
button_homepage: Zpět na domovskou stránku
title_anchor_prefix: "Odkaz na:"
posts_read_more: Přečíst celý příspěvek
posts_read_time:
one: "Doba čtení: 1 minuta"
other: "Doba čtení: {{ . }} minut(y)"
posts_update_prefix: Naposledy upraveno
posts_count:
one: "Jeden příspěvek"
other: "Příspěvků: {{ . }}"
posts_tagged_with: Všechny příspěvky označeny '{{ . }}'
footer_build_with: >
Vytvořeno za pomocí <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> a
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Právní upozornění
footer_privacy_policy: Zásady ochrany soukromí
footer_content_license_prefix: >
Obsah licencovaný pod
language_switch_no_translation_prefix: "Stránka není přeložena:"
propertylist_required: povinné
propertylist_optional: volitené
propertylist_default: výchozí
pagination_page_prev: předchozí
pagination_page_next: další
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/da.yaml
================================================
---
edit_page: Rediger side
nav_navigation: Navigation
nav_tags: Tags
nav_more: Mere
nav_top: Til toppen
form_placeholder_search: Søg
error_page_title: Faret vild? Bare rolig
error_message_title: Lost?
error_message_code: Fejl 404
error_message_text: >
Det du leder efter kan ikke findes. Bare rolig, du kan komme tilbage til
<a class="gdoc-error__link" href="{{ . }}">forsiden</a>.
button_toggle_dark: Skift Dark/Light/Auto mode
button_nav_open: Åben navigation
button_nav_close: Luk navigation
button_menu_open: Åben menubar
button_menu_close: Luk menubar
button_homepage: Tilbage til forsiden
title_anchor_prefix: "Link til:"
posts_read_more: Læs fulde indlæg
posts_read_time:
one: "Et minut at gennemlæse"
other: "{{ . }} minutter at gennemlæse"
posts_update_prefix: Opdateret den
posts_count:
one: "Et indlæg"
other: "{{ . }} indlæg"
posts_tagged_with: Alle indslag tagget med '{{ . }}'
footer_build_with: >
Bygget med <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> og
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Forretningsbetingelser
footer_privacy_policy: Privatlivspolitik
footer_content_license_prefix: >
Indhold licenseret under
language_switch_no_translation_prefix: "Indlæg ikke oversat:"
propertylist_required: påkrævet
propertylist_optional: valgfri
propertylist_default: udgangspunkt
pagination_page_prev: forrige
pagination_page_next: næste
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/de.yaml
================================================
---
edit_page: Seite bearbeiten
nav_navigation: Navigation
nav_tags: Tags
nav_more: Weitere
nav_top: Nach oben
form_placeholder_search: Suchen
error_page_title: Verlaufen? Keine Sorge
error_message_title: Verlaufen?
error_message_code: Fehler 404
error_message_text: >
Wir können die Seite nach der Du gesucht hast leider nicht finden. Keine Sorge,
wir bringen Dich zurück zur <a class="gdoc-error__link" href="{{ . }}">Startseite</a>.
button_toggle_dark: Wechsel zwischen Dunkel/Hell/Auto Modus
button_nav_open: Navigation öffnen
button_nav_close: Navigation schließen
button_menu_open: Menüband öffnen
button_menu_close: Menüband schließen
button_homepage: Zurück zur Startseite
title_anchor_prefix: "Link zu:"
posts_read_more: Ganzen Artikel lesen
posts_read_time:
one: "Eine Minute Lesedauer"
other: "{{ . }} Minuten Lesedauer"
posts_update_prefix: Aktualisiert am
posts_count:
one: "Ein Artikel"
other: "{{ . }} Artikel"
posts_tagged_with: Alle Artikel mit dem Tag '{{ . }}'
footer_build_with: >
Entwickelt mit <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> und
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Impressum
footer_privacy_policy: Datenschutzerklärung
footer_content_license_prefix: >
Inhalt lizensiert unter
language_switch_no_translation_prefix: "Seite nicht übersetzt:"
propertylist_required: erforderlich
propertylist_optional: optional
propertylist_default: Standardwert
pagination_page_prev: vorher
pagination_page_next: weiter
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/en.yaml
================================================
---
edit_page: Edit page
nav_navigation: Navigation
nav_tags: Tags
nav_more: More
nav_top: Back to top
form_placeholder_search: Search
error_page_title: Lost? Don't worry
error_message_title: Lost?
error_message_code: Error 404
error_message_text: >
Seems like what you are looking for can't be found. Don't worry, we can
bring you back to the <a class="gdoc-error__link" href="{{ . }}">homepage</a>.
button_toggle_dark: Toggle Dark/Light/Auto mode
button_nav_open: Open Navigation
button_nav_close: Close Navigation
button_menu_open: Open Menu Bar
button_menu_close: Close Menu Bar
button_homepage: Back to homepage
title_anchor_prefix: "Anchor to:"
posts_read_more: Read full post
posts_read_time:
one: "One minute to read"
other: "{{ . }} minutes to read"
posts_update_prefix: Updated on
posts_count:
one: "One post"
other: "{{ . }} posts"
posts_tagged_with: All posts tagged with '{{ . }}'
footer_build_with: >
Built with <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> and
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Legal Notice
footer_privacy_policy: Privacy Policy
footer_content_license_prefix: >
Content licensed under
language_switch_no_translation_prefix: "Page not translated:"
propertylist_required: required
propertylist_optional: optional
propertylist_default: default
pagination_page_prev: prev
pagination_page_next: next
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/es.yaml
================================================
---
edit_page: Editar página
nav_navigation: Navegación
nav_tags: Etiquetas
nav_more: Más
nav_top: Inicio de la página
form_placeholder_search: Buscar
error_page_title: Perdido? No te preocupes
error_message_title: Perdido?
error_message_code: Error 404
error_message_text: >
Al parecer, lo que estás buscando no pudo ser encontrado. No te preocupes, podemos
llevarte de vuelta al <a class="gdoc-error__link" href="{{ . }}">inicio</a>.
button_toggle_dark: Cambiar el modo Oscuro/Claro/Auto
button_nav_open: Abrir la Navegación
button_nav_close: Cerrar la Navegación
button_menu_open: Abrir el Menú Bar
button_menu_close: Cerrar el Menú Bar
button_homepage: Volver al Inicio
title_anchor_prefix: "Anclado a:"
posts_read_more: Lee la publicación completa
posts_read_time:
one: "Un minuto para leer"
other: "{{ . }} minutos para leer"
posts_update_prefix: Actualizado en
posts_count:
one: "Una publicación"
other: "{{ . }} publicaciones"
posts_tagged_with: Todas las publicaciones etiquetadas con '{{ . }}'
footer_build_with: >
Creado con <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> y
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Aviso Legal
footer_privacy_policy: Política de Privacidad
footer_content_license_prefix: >
Contenido licenciado con
language_switch_no_translation_prefix: "Página no traducida:"
propertylist_required: requerido
propertylist_optional: opcional
propertylist_default: estándar
pagination_page_prev: previo
pagination_page_next: siguiente
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/fr.yaml
================================================
---
edit_page: Editer la page
nav_navigation: Navigation
nav_tags: Tags
nav_more: Plus
nav_top: Retour au haut de page
form_placeholder_search: Chercher
error_page_title: Perdu? Ne t'inquiète pas
error_message_title: Perdu?
error_message_code: Error 404
error_message_text: >
On dirait que ce que vous cherchez est introuvable. Ne vous inquiétez pas, nous pouvons
vous ramèner à la <a class="gdoc-error__link" href="{{ . }}">page d'accueil</a>.
button_toggle_dark: Basculer le mode Sombre/Clair/Auto
button_nav_open: Ouvrir la navigation
button_nav_close: Fermer la navigation
button_menu_open: Ouvrir la barre de menus
button_menu_close: Fermer la barre de menus
button_homepage: retour à la page d'accueil
title_anchor_prefix: "Ancrer à :"
posts_read_more: Lire l'article complet
posts_read_time:
one: "Une minute pour lire"
other: "{{ . }} minutes à lire"
posts_update_prefix: Mis à jour le
posts_count:
one: "Un billet"
other: "{{ . }} billets"
posts_tagged_with: Tous les articles marqués avec '{{ . }}'
footer_build_with: >
Construit avec <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> et
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Mentions légales
footer_privacy_policy: Politique de confidentialité
footer_content_license_prefix: >
Contenu sous licence
language_switch_no_translation_prefix: "Page non traduite:"
propertylist_required: requis
propertylist_optional: facultatif
propertylist_default: défaut
pagination_page_prev: précédent
pagination_page_next: suivant
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/it.yaml
================================================
---
edit_page: Modifica la pagina
nav_navigation: Navigazione
nav_tags: Etichette
nav_more: Altro
nav_top: Torna su
form_placeholder_search: Cerca
error_page_title: Perso? Non ti preoccupare
error_message_title: Perso?
error_message_code: Errore 404
error_message_text: >
Sembra che non sia possibile trovare quello che stavi cercando. Non ti preoccupare,
possiamo riportarti alla <a class="gdoc-error__link" href="{{ . }}">pagina iniziale</a>.
button_toggle_dark: Seleziona il tema Chiaro/Scuro/Automatico
button_nav_open: Apri la Navigazione
button_nav_close: Chiudi la Navigazione
button_menu_open: Apri la Barra del Menu
button_menu_close: Chiudi la Barra del Menu
button_homepage: Torna alla pagina iniziale
title_anchor_prefix: "Ancora a:"
posts_read_more: Leggi tutto il post
posts_read_time:
one: "Tempo di lettura: un minuto"
other: "Tempo di lettura: {{ . }} minuti"
posts_update_prefix: Aggiornato il
posts_count:
one: "Un post"
other: "{{ . }} post"
posts_tagged_with: Tutti i post etichettati con '{{ . }}'
footer_build_with: >
Realizzato con <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> e
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Avviso Legale
footer_privacy_policy: Politica sulla Privacy
footer_content_license_prefix: >
Contenuto sotto licenza
language_switch_no_translation_prefix: "Pagina non tradotta:"
propertylist_required: richiesto
propertylist_optional: opzionale
propertylist_default: valore predefinito
pagination_page_prev: precedente
pagination_page_next: prossimo
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/ja.yaml
================================================
---
edit_page: ページの編集
nav_navigation: ナビゲーション
nav_tags: タグ
nav_more: さらに
nav_top: トップへ戻る
form_placeholder_search: 検索
error_page_title: お困りですか?ご心配なく
error_message_title: お困りですか?
error_message_code: 404 エラー
error_message_text: >
お探しのものが見つからないようです。<a class="gdoc-error__link" href="{{ . }}">トップページ</a>
へ戻ることができるので、ご安心ください。
button_toggle_dark: モードの切替 ダーク/ライト/自動
button_nav_open: ナビゲーションを開く
button_nav_close: ナビゲーションを閉じる
button_menu_open: メニューバーを開く
button_menu_close: メニューバーを閉じる
button_homepage: トップページへ戻る
title_anchor_prefix: "アンカー先:"
posts_read_more: 全投稿を閲覧
posts_read_time:
one: "読むのに 1 分かかります"
other: "読むのに要する時間 {{ . }} (分)"
posts_update_prefix: 更新時刻
posts_count:
one: "一件の投稿"
other: "{{ . }} 件の投稿"
posts_tagged_with: "'{{ . }}'のタグが付いた記事全部"
footer_build_with: >
<a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> でビルドしています。
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: 法的な告知事項
footer_privacy_policy: プライバシーポリシー
footer_content_license_prefix: >
提供するコンテンツのライセンス
language_switch_no_translation_prefix: "未翻訳のページ:"
propertylist_required: 必須
propertylist_optional: 任意
propertylist_default: 既定値
pagination_page_prev: 前
pagination_page_next: 次
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/nl.yaml
================================================
---
edit_page: Wijzig pagina
nav_navigation: Navigatie
nav_tags: Markering
nav_more: Meer
nav_top: Terug naar boven
form_placeholder_search: Zoek
error_page_title: Verdwaald? Geen probleem
error_message_title: Verdwaald?
error_message_code: Error 404
error_message_text: >
Het lijkt er op dat wat je zoekt niet gevonden kan worden. Geen probleem,
we kunnen je terug naar de <a class="gdoc-error__link" href="{{ . }}">startpagina</a> brengen.
button_toggle_dark: Wijzig Donker/Licht/Auto weergave
button_nav_open: Open navigatie
button_nav_close: Sluit navigatie
button_menu_open: Open menubalk
button_menu_close: Sluit menubalk
button_homepage: Terug naar startpagina
title_anchor_prefix: "Link naar:"
posts_read_more: Lees volledige bericht
posts_read_time:
one: "Een minuut leestijd"
other: "{{ . }} minuten leestijd"
posts_update_prefix: Bijgewerkt op
posts_count:
one: "Een bericht"
other: "{{ . }} berichten"
posts_tagged_with: Alle berichten gemarkeerd met '{{ . }}'
footer_build_with: >
Gebouwd met <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> en
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Juridische mededeling
footer_privacy_policy: Privacybeleid
footer_content_license_prefix: >
Inhoud gelicenseerd onder
language_switch_no_translation_prefix: "Pagina niet vertaald:"
propertylist_required: verplicht
propertylist_optional: optioneel
propertylist_default: standaard
pagination_page_prev: vorige
pagination_page_next: volgende
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/oc.yaml
================================================
---
edit_page: Modificar la pagina
nav_navigation: Navegacion
nav_tags: Etiquetas
nav_more: Mai
nav_top: Tornar ennaut
form_placeholder_search: Cercar
error_page_title: Perdut ? Cap de problèma
error_message_title: Perdut ?
error_message_code: Error 404
error_message_text: >
Sembla que cercatz quicòm que se pòt pas trobat. Vos’n fagatz pas vos podèm
tornar a la <a class="gdoc-error__link" href="{{ . }}">pagina d’acuèlh</a>.
button_toggle_dark: Alternar lo mòde escur/clar/auto
button_nav_open: Dobrir la navegacion
button_nav_close: Tampar la navegacion
button_menu_open: Dobrir la barra de menú
button_menu_close: Tampar la barra de menú
button_homepage: Tornar a la pagina d’acuèlh
title_anchor_prefix: "Ancorar a:"
posts_read_more: Legir la publicacion complèta
posts_read_time:
one: "Una minuta de lectura"
other: "{{ . }} minutas de lectura"
posts_update_prefix: Actualizada lo
posts_count:
one: "Una publicacion"
other: "{{ . }} publicacions"
posts_tagged_with: Totas las publicacions amb '{{ . }}'
footer_build_with: >
Construch amb <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> e
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
footer_legal_notice: Mencions legalas
footer_privacy_policy: politica de confidencialitat
footer_content_license_prefix: >
Contengut sota licéncia
language_switch_no_translation_prefix: "Pagina non traducha :"
propertylist_required: requerit
propertylist_optional: opcional
propertylist_default: per defaut
pagination_page_prev: prec.
pagination_page_next: seg.
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: i18n/zh-cn.yaml
================================================
---
edit_page: 编辑页面
nav_navigation: 导航
nav_tags: 标签
nav_more: 更多
nav_top: 回到顶部
form_placeholder_search: 搜索
error_page_title: 迷路了? 不用担心
error_message_title: 迷路了?
error_message_code: 错误 404
error_message_text: >
好像找不到你要找的东西。 别担心,我们可以
带您回到<a class="gdoc-error__link" href="{{ . }}">主页</a>。
button_toggle_dark: 切换暗/亮/自动模式
button_nav_open: 打开导航
button_nav_close: 关闭导航
button_menu_open: 打开菜单栏
button_menu_close: 关闭菜单栏
button_homepage: 返回首页
title_anchor_prefix: "锚定到:"
posts_read_more: 阅读全文
posts_read_time:
one: "一分钟阅读时间"
other: "{{ . }} 分钟阅读时间"
posts_update_prefix: 更新时间
posts_count:
one: 一篇文章
other: "{{ . }} 个帖子"
posts_tagged_with: 所有带有“{{ . }}”标签的帖子。
footer_build_with: >
基于 <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a>
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg> 制作
footer_legal_notice: "法律声明"
footer_privacy_policy: "隐私政策"
footer_content_license_prefix: >
内容许可证
language_switch_no_translation_prefix: "页面未翻译:"
propertylist_required: 需要
propertylist_optional: 可选
propertylist_default: 默认值
pagination_page_prev: 以前
pagination_page_next: 下一个
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"
================================================
FILE: layouts/404.html
================================================
<!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}">
<head>
{{ partial "head/meta" . }}
<title>{{ i18n "error_page_title" }}</title>
{{ partial "head/favicons" . }}
{{ partial "head/others" . }}
</head>
<body>
{{ partial "svg-icon-symbols" . }}
<div class="wrapper">
{{ partial "site-header" (dict "Root" . "MenuEnabled" false) }}
<main class="gdoc-error flex-even">
<div class="flex align-center justify-center">
<div class="gdoc-error__icon">
<svg class="gdoc-icon gdoc_cloud_off"><use xlink:href="#gdoc_cloud_off"></use></svg>
</div>
<div class="gdoc-error__message">
<div class="gdoc-error__line gdoc-error__title">{{ i18n "error_message_title" }}</div>
<div class="gdoc-error__line gdoc-error__code">{{ i18n "error_message_code" }}</div>
<div class="gdoc-error__line gdoc-error__help">
{{ i18n "error_message_text" .Site.Home.Permalink | safeHTML }}
</div>
</div>
</div>
</main>
{{ partial "site-footer" . }}
</div>
</body>
</html>
================================================
FILE: layouts/_default/_markup/render-codeblock-mermaid.html
================================================
<!-- prettier-ignore-start -->
{{ if not (.Page.Scratch.Get "mermaid") }}
<!-- Include mermaid only first time -->
<script defer src="{{ index (index hugo.Data.assets "mermaid.js") "src" | relURL }}"></script>
{{ .Page.Scratch.Set "mermaid" true }}
{{ end }}
<!-- prettier-ignore-end -->
<pre class="gdoc-mermaid mermaid text-center">
{{- .Inner -}}
</pre>
================================================
FILE: layouts/_default/_markup/render-heading.html
================================================
{{- $showAnchor := (and (default true .Page.Params.geekdocAnchor) (default true .Page.Site.Params.geekdocAnchor)) -}}
<!-- prettier-ignore-start -->
{{- if $showAnchor -}}
<div class="flex align-center gdoc-page__anchorwrap">
<h{{ .Level }} id="{{ .Anchor | safeURL }}" {{- with .Attributes.class }}
class="{{ . }}"
{{- end }}
>
{{ .Text | safeHTML }}
</h{{ .Level }}>
<a data-clipboard-text="{{ .Page.Permalink }}#{{ .Anchor | safeURL }}" class="gdoc-page__anchor clip flex align-center" title="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" aria-label="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" href="#{{ .Anchor | safeURL }}">
<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"></use></svg>
</a>
</div>
{{- else -}}
<div class="gdoc-page__anchorwrap">
<h{{ .Level }} id="{{ .Anchor | safeURL }}" {{- with .Attributes.class }}
class="{{ . }}"
{{- end }}
>
{{ .Text | safeHTML }}
</h{{ .Level }}>
</div>
{{- end -}}
<!-- prettier-ignore-end -->
================================================
FILE: layouts/_default/_markup/render-image.html
================================================
<img
src="{{ .Destination | safeURL }}"
alt="{{ .Text }}"
{{ with .Title }}title="{{ . }}"{{ end }}
/>
{{- /* Drop trailing newlines */ -}}
================================================
FILE: layouts/_default/_markup/render-link.html
================================================
{{- $raw := or (hasPrefix .Text "<img") (hasPrefix .Text "<figure") -}}
{{- $code := hasPrefix .Text "<code" -}}
<a
class="gdoc-markdown__link{{ if $raw -}}
--raw
{{- else if $code -}}
--code
{{- end }}"
href="{{ .Destination | safeURL }}"
{{- with .Title }}{{ printf "title=\"%s\"" . | safeHTMLAttr }}{{- end }}
>
{{- .Text | safeHTML -}}
</a>
{{- /* Drop trailing newlines */ -}}
================================================
FILE: layouts/_default/baseof.html
================================================
<!DOCTYPE html>
<html
lang="{{ .Site.Language.Lang }}"
class="color-toggle-hidden"
{{ if default false .Site.Params.geekdocDarkModeCode }}code-theme="dark"{{ end }}
>
<head>
{{ partial "head/meta" . }}
<title>
{{- if eq .Kind "home" -}}
{{ .Site.Title }}
{{- else -}}
{{ printf "%s | %s" (partial "utils/title" .) .Site.Title }}
{{- end -}}
</title>
{{ partial "head/favicons" . }}
{{ partial "head/rel-me" . }}
{{ partial "head/microformats" . }}
{{ partial "head/others" . }}
{{ partial "head/custom" . }}
</head>
<body itemscope itemtype="https://schema.org/WebPage">
<div class="w-full flex justify-center">
<a href="#main-content" id="gdoc-to-main" class="gdoc-markdown__link">Skip to main content</a>
</div>
{{ partial "svg-icon-symbols" . }}
<div
class="wrapper {{ if default false .Site.Params.geekdocDarkModeDim }}dark-mode-dim{{ end }}"
>
{{ $navEnabled := default true .Page.Params.geekdocNav }}
{{ partial "site-header" (dict "Root" . "MenuEnabled" $navEnabled) }}
<main class="container flex flex-even">
{{ if $navEnabled }}
<aside class="gdoc-nav">
{{ partial "menu" . }}
</aside>
{{ end }}
<div class="gdoc-page">
{{ template "main" . }}
{{ $showPrevNext := (default true .Site.Params.geekdocNextPrev) }}
{{ if $showPrevNext }}
<div class="gdoc-page__footer flex flex-wrap justify-between">
{{ if .Site.Params.geekdocMenuBundle }}
{{ partial "menu-bundle-np" . }}
{{ else }}
{{ partial "menu-filetree-np" . }}
{{ end }}
</div>
{{ end }}
</div>
</main>
{{ partial "site-footer" . }}
</div>
{{ partial "foot" . }}
</body>
</html>
================================================
FILE: layouts/_default/list.html
================================================
{{ define "main" }}
{{ partial "page-header" . }}
<article
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.geekdocAlign | lower) }}"
id="main-content" tabindex="-1"
>
<h1>{{ partial "utils/title" . }}</h1>
{{ partial "utils/content" . }}
</article>
{{ end }}
================================================
FILE: layouts/_default/single.html
================================================
{{ define "main" }}
{{ partial "page-header" . }}
<article
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.geekdocAlign | lower) }}"
id="main-content" tabindex="-1"
>
<h1>{{ partial "utils/title" . }}</h1>
{{ partial "page-metadata" . }}
{{ partial "utils/content" . }}
</article>
{{ end }}
================================================
FILE: layouts/_default/taxonomy.html
================================================
{{ define "main" }}
<div id="main-content" tabindex="-1">
{{ range .Paginator.Pages }}
<article class="gdoc-post">
<header class="gdoc-post__header">
<h1 class="gdoc-post__title">
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
</h1>
</header>
<section class="gdoc-markdown">
{{ .Summary }}
</section>
<div class="gdoc-post__readmore">
{{ if .Truncated }}
<a
class="flex-inline align-center fake-link"
title="{{ i18n "posts_read_more" }}"
href="{{ .RelPermalink }}"
>
{{ i18n "posts_read_more" }}
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
</a>
{{ end }}
</div>
<footer class="gdoc-post__footer">
<div class="flex flex-wrap align-center gdoc-post__meta">
{{ partial "posts/metadata.html" . }}
</div>
</footer>
</article>
{{ end }}
</div>
{{ partial "pagination.html" . }}
{{ end }}
{{ define "post-tag" }}
<span class="gdoc-post__tag">
<span class="gdoc-button">
<a
class="gdoc-button__link"
href="{{ .page.RelPermalink }}"
title="{{ i18n "posts_tagged_with" .name }}"
>
{{ .name }}
</a>
</span>
</span>
{{ end }}
================================================
FILE: layouts/_default/terms.html
================================================
{{ define "main" }}
<div id="main-content" tabindex="-1">
{{ range .Paginator.Pages.ByTitle }}
<article class="gdoc-post">
<header class="gdoc-post__header">
<h1 class="gdoc-post__title">
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
</h1>
</header>
<footer class="gdoc-post__meta flex align-center">
<span class="flex align-center no-wrap">
{{ $pageCount := len .Pages }}
<svg class="gdoc-icon gdoc_tag"><use xlink:href="#gdoc_tag"></use></svg>
<span class="gdoc-post__tag">
{{ i18n "posts_count" $pageCount }}
</span>
</span>
<span class="flex align-center no-wrap">
<svg class="gdoc-icon gdoc_star"><use xlink:href="#gdoc_star"></use></svg>
<span>
{{ $latest := index .Pages.ByDate 0 }}
{{ with $latest }}
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
{{ end }}
</span>
</span>
</footer>
</article>
{{ end }}
</div>
{{ partial "pagination.html" . }}
{{ end }}
================================================
FILE: layouts/partials/foot.html
================================================
================================================
FILE: layouts/partials/head/custom.html
================================================
<!--
You can add custom elements to the page header here.
Example:
Ensure to use the absolute path to custom files and place the source files in the `static` folder.
<link rel="stylesheet" type="text/css" href="/custom.css">
<script type="text/javascript" src="/custom.js"></script>
-->
================================================
FILE: layouts/partials/head/favicons.html
================================================
<link rel="icon" type="image/svg+xml" href="{{ "favicon/favicon.svg" | relURL }}" />
<link
rel="icon"
type="image/png"
sizes="32x32"
href="{{ "favicon/favicon-32x32.png" | relURL }}"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="{{ "favicon/favicon-16x16.png" | relURL }}"
/>
================================================
FILE: layouts/partials/head/meta.html
================================================
<meta charset="UTF-8" />
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="color-scheme" content="light dark" />
{{ hugo.Generator }}
{{ $keywords := default .Site.Params.Keywords .Keywords }}
{{- with partial "utils/description" . }}
<meta name="description" content="{{ trim (. | plainify) "\n" | safeHTML }}" />
{{- end }}
{{- with $keywords }}
<meta name="keywords" content="{{ delimit . "," }}" />
{{- end }}
================================================
FILE: layouts/partials/head/microformats.html
================================================
{{ partial "microformats/opengraph.html" . }}
{{ partial "microformats/twitter_cards.html" . }}
{{ partial "microformats/schema" . }}
================================================
FILE: layouts/partials/head/others.html
================================================
{{- if default true .Site.Params.geekdocDarkModeToggle }}
<script src="{{ index (index hugo.Data.assets "colortheme.js") "src" | relURL }}"></script>
{{- end }}
<script src="{{ index (index hugo.Data.assets "main.js") "src" | relURL }}"></script>
<link
rel="preload"
as="font"
href="{{ "fonts/Metropolis.woff2" | relURL }}"
type="font/woff2"
crossorigin="anonymous"
/>
<link
rel="preload"
as="font"
href="{{ "fonts/LiberationSans.woff2" | relURL }}"
type="font/woff2"
crossorigin="anonymous"
/>
<link
rel="preload"
href="{{ index (index hugo.Data.assets "main.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index hugo.Data.assets "main.scss") "src" | relURL }}"
media="all"
/>
<link
rel="preload"
href="{{ index (index hugo.Data.assets "mobile.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index hugo.Data.assets "mobile.scss") "src" | relURL }}"
media="screen and (max-width: 45rem)"
/>
<link
rel="preload"
href="{{ index (index hugo.Data.assets "print.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index hugo.Data.assets "print.scss") "src" | relURL }}"
media="print"
/>
<link
rel="preload"
href="{{ index (index hugo.Data.assets "custom.css") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index hugo.Data.assets "custom.css") "src" | relURL }}"
media="all"
/>
{{- with .OutputFormats.Get "html" }}
{{ printf `<link href=%q rel=%q type=%q />` .Permalink .Rel .MediaType.Type | safeHTML }}
{{- end }}
{{- if (default false $.Site.Params.geekdocOverwriteHTMLBase) }}
<base href="{{ .Site.Home.Permalink }}" />
{{- end }}
{{ printf "<!-- %s -->" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}
================================================
FILE: layouts/partials/head/rel-me.html
================================================
<!-- place to set your rel-me links https://microformats.org/wiki/rel-me -->
================================================
FILE: layouts/partials/language.html
================================================
{{ if hugo.IsMultilingual }}
<span class="gdoc-language">
<ul class="gdoc-language__selector" tabindex="0" role="button" aria-pressed="false">
<li>
{{ range .Site.Languages }}
{{ if eq . $.Site.Language }}
<span class="flex align-center">
<svg class="gdoc-icon gdoc_language"><use xlink:href="#gdoc_language"></use></svg>
<span>{{ .Lang | upper }}</span>
</span>
{{ end }}
{{ end }}
<ul class="gdoc-language__list">
{{ if $.Translations }}
{{ range $.Translations }}
<li>
<a
class="flex gdoc-language__entry"
title="{{ .Language.LanguageName }}"
href="{{ .RelPermalink }}"
hreflang="{{ .Lang }}"
lang="{{ .Lang }}"
>
{{ .Language.LanguageName }}
</a>
</li>
{{ end }}
{{ else }}
{{ range .Site.Languages -}}
{{ if ne $.Site.Language.Lang .Lang }}
<li>
<a
class="flex gdoc-language__entry"
title="{{ i18n "language_switch_no_translation_prefix" }} {{ .LanguageName }}"
href="{{ .Lang | relLangURL }}"
hreflang="{{ .Lang }}"
lang="{{ .Lang }}"
>
{{ .LanguageName }}*
</a>
</li>
{{ end -}}
{{ end -}}
{{ end }}
</ul>
</li>
</ul>
</span>
{{ end }}
================================================
FILE: layouts/partials/menu-bundle-np.html
================================================
{{ $current := . }}
{{ $site := .Site }}
{{ $current.Scratch.Set "prev" false }}
{{ $current.Scratch.Set "getNext" false }}
{{ $current.Scratch.Set "nextPage" false }}
{{ $current.Scratch.Set "prevPage" false }}
{{ template "menu-bundle-np" dict "sect" hugo.Data.menu.main.main "current" $current "site" $site }}
{{ define "menu-bundle-np" }}
{{ $current := .current }}
{{ $site := .site }}
{{ range sort (default (seq 0) .sect) "weight" }}
{{ $current.Scratch.Set "current" $current }}
{{ $current.Scratch.Set "site" $site }}
{{ $ref := default false .ref }}
{{ if $ref }}
{{ $site := $current.Scratch.Get "site" }}
{{ $this := $site.GetPage .ref }}
{{ $current := $current.Scratch.Get "current" }}
{{ if reflect.IsMap .name }}
{{ $current.Scratch.Set "refName" (index .name $site.Language.Lang) }}
{{ else }}
{{ $current.Scratch.Set "refName" .name }}
{{ end }}
{{ $name := $current.Scratch.Get "refName" }}
{{ if $current.Scratch.Get "getNext" }}
{{ $current.Scratch.Set "nextPage" (dict "name" $name "this" $this) }}
{{ $current.Scratch.Set "getNext" false }}
{{ end }}
{{ if eq $current $this }}
{{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
{{ $current.Scratch.Set "getNext" true }}
{{ end }}
{{ $current.Scratch.Set "prev" (dict "name" $name "this" $this) }}
{{ end }}
{{ $sub := default false .sub }}
{{ if $sub }}
{{ template "menu-bundle-np" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
{{ end }}
{{ end }}
{{ end }}
<span class="gdoc-page__nav">
{{ with ($current.Scratch.Get "prevPage") }}
<a
class="gdoc-page__nav--prev flex align-center"
href="{{ .this.RelPermalink }}"
title="{{ .name }}"
>
<i class="gdoc-icon">gdoc_arrow_left_alt</i>
{{ .name }}
</a>
{{ end }}
</span>
<span class="gdoc-page__nav">
{{ with ($current.Scratch.Get "nextPage") }}
<a
class="gdoc-page__nav--next flex align-center"
href="{{ .this.RelPermalink }}"
title="{{ .name }}"
>
{{ .name }}
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
</a>
{{ end }}
</span>
================================================
FILE: layouts/partials/menu-bundle.html
================================================
{{ $current := .current }}
{{ template "menu-file" dict "sect" .source "current" $current "site" $current.Site }}
<!-- template -->
{{ define "menu-file" }}
{{ $current := .current }}
{{ $site := .site }}
<ul class="gdoc-nav__list">
{{ range sort (default (seq 0) .sect) "weight" }}
{{ $name := .name }}
{{ if reflect.IsMap .name }}
{{ $name = (index .name $site.Language.Lang) }}
{{ end }}
<li>
{{ $ref := default false .ref }}
{{ if $ref }}
{{ $this := $site.GetPage .ref }}
{{ $icon := default false .icon }}
{{ $numberOfPages := (add (len $this.Pages) (len $this.Sections)) }}
{{ $isCurrent := eq $current $this }}
{{ $isAncestor := $this.IsAncestor $current }}
{{ $id := substr (sha1 $this.Permalink) 0 8 }}
{{ $doCollapse := and (isset . "sub") (or $this.Params.geekdocCollapseSection (default false .Site.Params.geekdocCollapseAllSections)) }}
{{ $anchor := default "" .anchor }}
{{ if $anchor }}
{{ $anchor = printf "#%s" $anchor }}
{{ end }}
{{ if or .external ($this.RelPermalink) }}
<input
type="checkbox"
{{ if $doCollapse }}
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
{{ if or $isCurrent $isAncestor }}checked{{ end }}
{{ else }}
class="hidden"
{{ end }}
/>
<label
{{ if $doCollapse }}
for="{{ printf "navtree-%s" $id }}" class="flex justify-between align-center"
{{ end }}
>
<span class="flex">
{{ if $icon }}
<svg class="gdoc-icon {{ .icon }}"><use xlink:href="#{{ .icon }}"></use></svg>
{{ end }}
<a
href="{{ if .external -}}
{{ .ref }}
{{- else -}}
{{ path.Join $this.RelPermalink $anchor }}
{{- end }}"
class="gdoc-nav__entry{{- if not .external }}
{{- if $isCurrent }}{{ printf " is-active" }}{{ end }}
{{- end }}"
{{ if .rel -}}
rel="{{ .rel }}"
{{- end }}
>
{{ $name }}
</a>
</span>
{{ if $doCollapse }}
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_left">
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
</svg>
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_down">
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
</svg>
{{ end }}
</label>
{{ end }}
{{ else }}
<span class="flex">{{ $name }}</span>
{{ end }}
{{ with .sub }}
{{ template "menu-file" dict "sect" . "current" $current "site" $site }}
{{ end }}
</li>
{{ end }}
</ul>
{{ end }}
================================================
FILE: layouts/partials/menu-extra.html
================================================
{{ $current := .current }}
{{ template "menu-extra" dict "sect" .source "current" $current "site" $current.Site "target" .target }}
<!-- template -->
{{ define "menu-extra" }}
{{ $current := .current }}
{{ $site := .site }}
{{ $target := .target }}
{{ $sect := .sect }}
{{ range sort (default (seq 0) $sect) "weight" }}
{{ if isset . "ref" }}
{{ $this := $site.GetPage .ref }}
{{ $isCurrent := eq $current $this }}
{{ $icon := default false .icon }}
{{ $name := .name }}
{{ if reflect.IsMap .name }}
{{ $name = (index .name $site.Language.Lang) }}
{{ end }}
{{ if not .icon }}
{{ errorf "Missing 'icon' attribute in data file for '%s' menu item '%s'" $target $name }}
{{ end }}
{{ if eq $target "header" }}
<span>
<a
href="{{ if .external -}}
{{ .ref }}
{{- else -}}
{{ relref $current .ref }}
{{- end }}"
class="gdoc-header__link"
{{ if .rel -}}
rel="{{ .rel }}"
{{- end }}
>
<svg class="gdoc-icon {{ .icon }}">
<title>{{ $name }}</title>
<use xlink:href="#{{ .icon }}"></use>
</svg>
</a>
</span>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
================================================
FILE: layouts/partials/menu-filetree-np.html
================================================
{{ $current := . }}
{{ $site := .Site }}
{{ $current.Scratch.Set "prev" false }}
{{ $current.Scratch.Set "getNext" false }}
{{ $current.Scratch.Set "nextPage" false }}
{{ $current.Scratch.Set "prevPage" false }}
{{ template "menu-filetree-np" dict "sect" .Site.Home.Sections "current" $current "site" $site }}
{{ define "menu-filetree-np" }}
{{ $current := .current }}
{{ $site := .site }}
{{ $sortBy := (default "title" .current.Site.Params.geekdocFileTreeSortBy | lower) }}
{{ range .sect.GroupBy "Weight" }}
{{ $rangeBy := .ByTitle }}
{{ if eq $sortBy "title" }}
{{ $rangeBy = .ByTitle }}
{{ else if eq $sortBy "linktitle" }}
{{ $rangeBy = .ByLinkTitle }}
{{ else if eq $sortBy "date" }}
{{ $rangeBy = .ByDate }}
{{ else if eq $sortBy "publishdate" }}
{{ $rangeBy = .ByPublishDate }}
{{ else if eq $sortBy "expirydate" }}
{{ $rangeBy = .ByExpiryDate }}
{{ else if eq $sortBy "lastmod" }}
{{ $rangeBy = .ByLastmod }}
{{ else if eq $sortBy "title_reverse" }}
{{ $rangeBy = .ByTitle.Reverse }}
{{ else if eq $sortBy "linktitle_reverse" }}
{{ $rangeBy = .ByLinkTitle.Reverse }}
{{ else if eq $sortBy "date_reverse" }}
{{ $rangeBy = .ByDate.Reverse }}
{{ else if eq $sortBy "publishdate_reverse" }}
{{ $rangeBy = .ByPublishDate.Reverse }}
{{ else if eq $sortBy "expirydate_reverse" }}
{{ $rangeBy = .ByExpiryDate.Reverse }}
{{ else if eq $sortBy "lastmod_reverse" }}
{{ $rangeBy = .ByLastmod.Reverse }}
{{ end }}
{{ range $rangeBy }}
{{ $current.Scratch.Set "current" $current }}
{{ $current.Scratch.Set "site" $site }}
{{ if not .Params.geekdocHidden }}
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
{{ $site := $current.Scratch.Get "site" }}
{{ $this := . }}
{{ $current := $current.Scratch.Get "current" }}
{{ $current.Scratch.Set "refName" (partial "utils/title" .) }}
{{ $name := $current.Scratch.Get "refName" }}
{{ if $current.Scratch.Get "getNext" }}
{{ if or $this.Content $this.Params.geekdocFlatSection }}
{{ $current.Scratch.Set "nextPage" (dict "name" $name "this" $this) }}
{{ $current.Scratch.Set "getNext" false }}
{{ end }}
{{ end }}
{{ if eq $current.RelPermalink $this.RelPermalink }}
{{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
{{ $current.Scratch.Set "getNext" true }}
{{ end }}
{{ if or $this.Content $this.Params.geekdocFlatSection }}
{{ $current.Scratch.Set "prev" (dict "name" $name "this" $this) }}
{{ end }}
{{ $sub := and (ne $numberOfPages 0) (not .Params.geekdocFlatSection) }}
{{ if $sub }}
{{ template "menu-filetree-np" dict "sect" .Pages "current" $current }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
<span class="gdoc-page__nav">
{{ with ($current.Scratch.Get "prevPage") }}
<a
class="gdoc-page__nav--prev flex align-center"
href="{{ .this.RelPermalink }}"
title="{{ .name }}"
>
<i class="gdoc-icon">gdoc_arrow_left_alt</i>
{{ .name }}
</a>
{{ end }}
</span>
<span class="gdoc-page__nav">
{{ with ($current.Scratch.Get "nextPage") }}
<a
class="gdoc-page__nav--next flex align-center"
href="{{ .this.RelPermalink }}"
title="{{ .name }}"
>
{{ .name }}
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
</a>
{{ end }}
</span>
================================================
FILE: layouts/partials/menu-filetree.html
================================================
{{ $current := . }}
{{ template "tree-nav" dict "sect" .Site.Home.Sections "current" $current }}
<!-- templates -->
{{ define "tree-nav" }}
{{ $current := .current }}
<ul class="gdoc-nav__list">
{{ $sortBy := (default "title" .current.Site.Params.geekdocFileTreeSortBy | lower) }}
{{ range .sect.GroupBy "Weight" }}
{{ $rangeBy := .ByTitle }}
{{ if eq $sortBy "title" }}
{{ $rangeBy = .ByTitle }}
{{ else if eq $sortBy "linktitle" }}
{{ $rangeBy = .ByLinkTitle }}
{{ else if eq $sortBy "date" }}
{{ $rangeBy = .ByDate }}
{{ else if eq $sortBy "publishdate" }}
{{ $rangeBy = .ByPublishDate }}
{{ else if eq $sortBy "expirydate" }}
{{ $rangeBy = .ByExpiryDate }}
{{ else if eq $sortBy "lastmod" }}
{{ $rangeBy = .ByLastmod }}
{{ else if eq $sortBy "title_reverse" }}
{{ $rangeBy = .ByTitle.Reverse }}
{{ else if eq $sortBy "linktitle_reverse" }}
{{ $rangeBy = .ByLinkTitle.Reverse }}
{{ else if eq $sortBy "date_reverse" }}
{{ $rangeBy = .ByDate.Reverse }}
{{ else if eq $sortBy "publishdate_reverse" }}
{{ $rangeBy = .ByPublishDate.Reverse }}
{{ else if eq $sortBy "expirydate_reverse" }}
{{ $rangeBy = .ByExpiryDate.Reverse }}
{{ else if eq $sortBy "lastmod_reverse" }}
{{ $rangeBy = .ByLastmod.Reverse }}
{{ end }}
{{ range $rangeBy }}
{{ if not .Params.geekdocHidden }}
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
{{ $isParent := and (ne $numberOfPages 0) (not .Params.geekdocFlatSection) }}
{{ $isCurrent := eq $current . }}
{{ $isAncestor := .IsAncestor $current }}
{{ $id := substr (sha1 .Permalink) 0 8 }}
{{ $doCollapse := and $isParent (or .Params.geekdocCollapseSection (default false .Site.Params.geekdocCollapseAllSections)) }}
<li>
<input
type="checkbox"
{{ if $doCollapse }}
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
{{ if or $isCurrent $isAncestor }}checked{{ end }}
{{ else }}
class="hidden"
{{ end }}
/>
<label
{{ if $doCollapse }}
for="{{ printf "navtree-%s" $id }}" class="flex justify-between align-center"
{{ end }}
>
{{ if or .Content .Params.geekdocFlatSection }}
<span class="flex">
<a
href="{{ .RelPermalink }}"
class="gdoc-nav__entry{{- if eq $current . }}
{{- printf " is-active" }}
{{- end }}"
>
{{ partial "utils/title" . }}
</a>
</span>
{{ else }}
<span class="flex">{{ partial "utils/title" . }}</span>
{{ end }}
{{ if $doCollapse }}
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_left">
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
</svg>
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_down">
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
</svg>
{{ end }}
</label>
{{ if $isParent }}
{{ template "tree-nav" dict "sect" .Pages "current" $current }}
{{ end }}
</li>
{{ end }}
{{ end }}
{{ end }}
</ul>
{{ end }}
================================================
FILE: layouts/partials/menu.html
================================================
<nav>
{{ partial "search" . }}
<section class="gdoc-nav--main">
<h2>{{ i18n "nav_navigation" }}</h2>
{{ if .Site.Params.geekdocMenuBundle }}
{{ partial "menu-bundle" (dict "current" . "source" hugo.Data.menu.main.main) }}
{{ else }}
{{ partial "menu-filetree" . }}
{{ end }}
</section>
{{ if and (in (slice "posts" "tags") .Section) (default false .Site.Params.geekdocTagsToMenu) }}
<section class="gdoc-nav--tags">
<h2>{{ i18n "nav_tags" }}</h2>
<ul class="gdoc-nav__list">
{{ $currentPage := .RelPermalink }}
{{ range $name, $taxonomy := .Site.Taxonomies.tags }}
{{ with $.Site.GetPage (printf "/tags/%s" $name) }}
<li>
<a
class="gdoc-nav__entry{{- if eq $currentPage .RelPermalink }}
{{- printf " is-active" }}
{{- end }}"
href="{{ .RelPermalink }}"
>
{{ partial "utils/title" . }}
</a>
</li>
{{ end }}
{{ end }}
</ul>
</section>
{{ end }}
<section class="gdoc-nav--more">
{{ if hugo.Data.menu.more.more }}
<h2>{{ i18n "nav_more" }}</h2>
{{ partial "menu-bundle" (dict "current" . "source" hugo.Data.menu.more.more) }}
{{ end }}
</section>
</nav>
================================================
FILE: layouts/partials/microformats/opengraph.html
================================================
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
{{- if ne .Kind "home" }}
<meta
property="og:title"
{{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }}
/>
{{- end }}
{{- with .Site.Title }}
<meta property="og:site_name" {{ . | printf "content=%q" | safeHTMLAttr }} />
{{- end }}
{{- with partial "utils/featured" . }}
<meta property="og:image" content="{{ . }}" />
{{- end }}
{{- with partial "utils/description" . }}
<meta property="og:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
{{- end }}
<meta property="og:type" content="{{ if $isPage }}article{{ else }}website{{ end }}" />
<meta property="og:url" content="{{ .Permalink }}" />
{{- with .Params.audio }}
<meta property="og:audio" content="{{ . }}" />
{{- end }}
{{- with .Params.locale }}
<meta property="og:locale" content="{{ . }}" />
{{- end }}
{{- with .Params.videos }}
{{- range . }}
<meta property="og:video" content="{{ . | absURL }}" />
{{- end }}
{{- end }}
{{- /* If it is part of a series, link to related articles */}}
{{- if .Site.Taxonomies.series }}
{{- $permalink := .Permalink -}}
{{- $siteSeries := .Site.Taxonomies.series -}}
{{- with .Params.series }}
{{- range $name := . }}
{{- $series := index $siteSeries ($name | urlize) }}
{{- range $page := first 6 $series.Pages }}
{{- if ne $page.Permalink $permalink }}
<meta property="og:see_also" content="{{ $page.Permalink }}" />
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{ if $isPage -}}
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
<meta property="article:section" content="{{ .Section | humanize | title }}" />
{{- with .PublishDate }}
<meta
property="article:published_time"
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
/>
{{- end }}
{{- with .Lastmod }}
<meta
property="article:modified_time"
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
/>
{{- end }}
{{- end }}
{{- /* Facebook Page Admin ID for Domain Insights */}}
{{- with .Site.Params.facebook_admin }}
<meta property="fb:admins" content="{{ . }}" />
{{- end }}
================================================
FILE: layouts/partials/microformats/schema.html
================================================
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
{{- if eq .Kind "home" }}
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": {{ .Site.Title }},
"url": {{ .Site.Home.Permalink }},
{{- with partial "utils/description" . }}
"description": "{{ . | plainify | htmlUnescape | chomp }}",
{{- end }}
{{- with partial "utils/featured" . }}
"thumbnailUrl": {{ . }},
{{- end }}
{{- with .Site.Params.geekdocContentLicense }}
"license": "{{ .name }}",
{{- end }}
"inLanguage": {{ .Lang }}
}
</script>
{{- else if $isPage }}
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "TechArticle",
"articleSection": "{{ .Section | humanize | title }}",
"name": {{ partial "utils/title" . }},
"url": {{ .Permalink }},
"headline": {{ partial "utils/title" . }},
{{- with .Params.lead }}
"alternativeHeadline": {{ . }},
{{- end }}
{{- with partial "utils/description" . }}
"description": "{{ . | plainify | htmlUnescape | chomp }}",
{{- end }}
{{- with partial "utils/featured" . }}
"thumbnailUrl": {{ . }},
{{- end }}
"wordCount": "{{ .WordCount }}",
{{- with .Site.Params.geekdocContentLicense }}
"license": "{{ .name }}",
{{- end }}
"inLanguage": {{ .Lang }},
"isFamilyFriendly": "true",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": {{ .Permalink }}
},
{{- with $tags := .Params.tags }}
"keywords": [{{ range $i, $tag := $tags }}{{ if $i }}, {{ end }}"{{ $tag }}"{{ end }}],
{{- end }}
"copyrightHolder": "{{ .Site.Title }}",
"copyrightYear": "{{ .Date.Format "2006" }}",
"dateCreated": "{{ .Date.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
"datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
"publisher":{
"@type":"Organization",
"name": {{ .Site.Title }},
"url": {{ .Site.Home.Permalink }},
"logo": {
"@type": "ImageObject",
"url": {{ (default "brand.svg" .Site.Params.geekdocLogo) | absURL }},
"width":"32",
"height":"32"
}
}
}
</script>
{{- end }}
================================================
FILE: layouts/partials/microformats/twitter_cards.html
================================================
{{- with partial "utils/featured" . }}
<meta name="twitter:card" content="summary_large_image" />
{{- else }}
<meta name="twitter:card" content="summary" />
{{- end }}
<meta name="twitter:title" {{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }} />
{{- with partial "utils/featured" . }}
<meta property="twitter:image" content="{{ . }}" />
{{- end }}
{{- with partial "utils/description" . }}
<meta name="twitter:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
{{- end }}
{{- with .Site.Params.twitter -}}
<meta name="twitter:site" content="@{{ . }}" />
{{- end }}
================================================
FILE: layouts/partials/page-header.html
================================================
{{ $geekdocRepo := default (default false .Site.Params.geekdocRepo) .Page.Params.geekdocRepo }}
{{ $geekdocEditPath := default (default false .Site.Params.geekdocEditPath) .Page.Params.geekdocEditPath }}
{{ if .File }}
{{ $.Scratch.Set "geekdocFilePath" (default (strings.TrimPrefix hugo.WorkingDir .File.Filename) .Page.Params.geekdocFilePath) }}
{{ else }}
{{ $.Scratch.Set "geekdocFilePath" false }}
{{ end }}
{{ define "breadcrumb" }}
{{ $parent := .page.Parent }}
{{ if $parent }}
{{ $name := (partial "utils/title" $parent) }}
{{ $position := (sub .position 1) }}
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a itemscope itemtype='https://schema.org/WebPage' itemprop='item' itemid='%s' href='%s'><span itemprop='name'>%s</span></a><meta itemprop='position' content='%d' /></li><li> / </li>%s" $parent.RelPermalink $parent.RelPermalink $name $position .value) }}
{{ template "breadcrumb" dict "page" $parent "value" $value "position" $position }}
{{ else }}
{{ .value | safeHTML }}
{{ end }}
{{ end }}
{{ $showBreadcrumb := (and (default true .Page.Params.geekdocBreadcrumb) (default true .Site.Params.geekdocBreadcrumb)) }}
{{ $showEdit := (and ($.Scratch.Get "geekdocFilePath") $geekdocRepo $geekdocEditPath) }}
<div
class="gdoc-page__header flex flex-wrap
{{ if $showBreadcrumb }}
justify-between
{{ else }}
justify-end
{{ end }}
{{ if not $showEdit }}hidden-mobile{{ end }}
{{ if (and (not $showBreadcrumb) (not $showEdit)) }}hidden{{ end }}"
itemprop="breadcrumb"
>
{{ if $showBreadcrumb }}
<div>
<svg class="gdoc-icon gdoc_path hidden-mobile"><use xlink:href="#gdoc_path"></use></svg>
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
{{ $position := sub (len (split .RelPermalink "/")) 1 }}
{{ $name := (partial "utils/title" .) }}
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><span itemprop='name'>%s</span><meta itemprop='position' content='%d' /></li>" $name $position ) }}
{{ template "breadcrumb" dict "page" . "value" $value "position" $position }}
</ol>
</div>
{{ end }}
{{ if $showEdit }}
<div>
<span class="editpage">
<svg class="gdoc-icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
<a
href="{{ $geekdocRepo }}/{{ path.Join $geekdocEditPath ($.Scratch.Get "geekdocFilePath") }}"
rel="edit"
>
{{ i18n "edit_page" }}
</a>
</span>
</div>
{{ end }}
</div>
================================================
FILE: layouts/partials/page-metadata.html
================================================
{{- $showPageLastmod := (or (default false .Page.Params.geekdocPageLastmod) (default false .Site.Params.geekdocPageLastmod)) -}}
{{- if $showPageLastmod -}}
<span class="flex align-center no-wrap">
<svg class="gdoc-icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ if .Lastmod.After (.Date.AddDate 0 0 1) }}
{{ i18n "posts_update_prefix" }}
{{ end }}
{{ .Lastmod.Format "Jan 2, 2006" }}
</time>
</span>
{{- end -}}
================================================
FILE: layouts/partials/pagination.html
================================================
{{ $page := $.Paginator }}
<nav class="gdoc-paging flex flex-even align-center" role="navigation">
<div class="gdoc-paging__item gdoc-paging__item--prev">
{{ if $page.HasPrev }}
<a class="flex-inline align-center fake-link no-wrap" href="{{ $page.Prev.URL }}">
<i class="gdoc-icon">gdoc_keyboard_arrow_left</i>
{{ i18n "pagination_page_prev" | upper }}
</a>
{{ end }}
</div>
<div class="gdoc-paging__state">{{ i18n "pagination_page_state" $page }}</div>
<div class="gdoc-paging__item gdoc-paging__item--next">
{{ if $page.HasNext }}
<a class="flex-inline align-center fake-link no-wrap" href="{{ $page.Next.URL }}">
{{ i18n "pagination_page_next" | upper }}
<i class="gdoc-icon">gdoc_keyboard_arrow_right</i>
</a>
{{ end }}
</div>
</nav>
================================================
FILE: layouts/partials/posts/metadata.html
================================================
<span class="flex align-center no-wrap">
<svg class="gdoc-icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
<span class="gdoc-post__tag">
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
{{ if .Lastmod.After (.Date.AddDate 0 0 1) }}
{{ i18n "posts_update_prefix" }}
{{ end }}
{{ .Lastmod.Format "Jan 2, 2006" }}
</time>
</span>
</span>
<span class="flex align-center no-wrap">
<svg class="gdoc-icon gdoc_timer"><use xlink:href="#gdoc_timer"></use></svg>
<span class="gdoc-post__tag">{{ i18n "posts_read_time" .ReadingTime }}</span>
</span>
{{ $tc := 0 }}
{{ with .Params.tags }}
{{ range sort . }}
{{ $name := . }}
{{ with $.Site.GetPage (printf "/tags/%s" $name | urlize) }}
{{ if eq $tc 0 }}
<span class="flex align-center no-wrap">
<svg class="gdoc-icon gdoc_bookmark"><use xlink:href="#gdoc_bookmark"></use></svg>
{{ template "post-tag" dict "name" $name "page" . }}
</span>
{{ else }}
<span class="flex align-center">
{{ template "post-tag" dict "name" $name "page" . }}
</span>
{{ end }}
{{ end }}
{{ $tc = (add $tc 1) }}
{{ end }}
{{ end }}
{{ define "post-tag" }}
<span class="gdoc-post__tag gdoc-button gdoc-button--regular">
<a
class="gdoc-button__link"
href="{{ .page.RelPermalink }}"
title="{{ i18n "posts_tagged_with" .name }}"
>
{{ .name }}
</a>
</span>
{{ end }}
================================================
FILE: layouts/partials/search.html
================================================
{{ if default true .Site.Params.geekdocSearch }}
<script defer src="{{ index (index hugo.Data.assets "search.js") "src" | relURL }}"></script>
{{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
{{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
{{- $searchConfig.Publish -}}
<div class="gdoc-search flex align-center">
<svg class="gdoc-icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
<input
type="text"
id="gdoc-search-input"
class="gdoc-search__input"
placeholder="{{ i18n "form_placeholder_search" }}..."
aria-label="{{ i18n "form_placeholder_search" }}"
maxlength="64"
data-site-base-url="{{ "" | absURL }}"
data-site-lang="{{ .Site.Language.Lang }}"
/>
<ul id="gdoc-search-results" class="gdoc-search__list"></ul>
</div>
{{ end }}
================================================
FILE: layouts/partials/site-footer.html
================================================
<footer class="gdoc-footer">
<nav class="container flex">
<div>
<section class="flex flex-wrap align-center">
<span class="gdoc-footer__item gdoc-footer__item--row">
{{ i18n "footer_build_with" | safeHTML }}
</span>
{{ with .Site.Params.geekdocLegalNotice }}
<span class="gdoc-footer__item gdoc-footer__item--row">
<a href="{{ . | relURL }}" class="gdoc-footer__link">
{{ i18n "footer_legal_notice" }}
</a>
</span>
{{ end }}
{{ with .Site.Params.geekdocPrivacyPolicy }}
<span class="gdoc-footer__item gdoc-footer__item--row">
<a href="{{ . | relURL }}" class="gdoc-footer__link">
{{ i18n "footer_privacy_policy" }}
</a>
</span>
{{ end }}
</section>
{{ with .Site.Params.geekdocContentLicense }}
<section class="flex flex-wrap align-center">
<span class="gdoc-footer__item">
{{ i18n "footer_content_license_prefix" }}
<a href="{{ .link }}" class="gdoc-footer__link no-wrap">{{ .name }}</a>
</span>
</section>
{{ end }}
</div>
{{ if (default true .Site.Params.geekdocBackToTop) }}
<div class="flex flex-25 justify-end">
<span class="gdoc-footer__item text-right">
<a class="gdoc-footer__link fake-link" href="#" aria-label="{{ i18n "nav_top" }}">
<svg class="gdoc-icon gdoc_keyboard_arrow_up">
<use xlink:href="#gdoc_keyboard_arrow_up"></use>
</svg>
<span class="hidden-mobile">{{ i18n "nav_top" }}</span>
</a>
</span>
</div>
{{ end }}
</nav>
</footer>
================================================
FILE: layouts/partials/site-header.html
================================================
<header class="gdoc-header">
<div class="container flex align-center justify-between">
{{ if .MenuEnabled }}
<label for="menu-control" class="gdoc-nav__control">
<div tabindex="0" role="button" aria-pressed="false">
<input type="checkbox" class="hidden" id="menu-control" />
<svg class="gdoc-icon gdoc_menu">
<title>{{ i18n "button_nav_open" }}</title>
<use xlink:href="#gdoc_menu"></use>
</svg>
<svg class="gdoc-icon gdoc_arrow_back">
<title>{{ i18n "button_nav_close" }}</title>
<use xlink:href="#gdoc_arrow_back"></use>
</svg>
</div>
</label>
{{ end }}
<div>
<a class="gdoc-brand gdoc-header__link flex gap-16 align-center" href="{{ .Root.Site.Home.Permalink }}">
<img
class="gdoc-brand__img"
src="{{ (default "brand.svg" .Root.Site.Params.geekdocLogo) | relURL }}"
alt=""
/>
<div>
<div class="gdoc-brand__title">{{ .Root.Site.Title }}</div>
{{ with .Root.Site.Params.geekdocSubtitle }}
<div class="gdoc-brand__subtitle">{{ . }}</div>
{{ end }}
</div>
</a>
</div>
<div class="gdoc-menu-header flex gap-16">
<span class="gdoc-menu-header__items">
{{ if .Roothugo.Data.menu.extra.header }}
{{ partial "menu-extra" (dict "current" .Root "source" .Roothugo.Data.menu.extra.header "target" "header") }}
{{ end }}
<span id="gdoc-color-theme" tabindex="0" role="button" aria-pressed="false">
<svg class="gdoc-icon gdoc_brightness_dark">
<title>{{ i18n "button_toggle_dark" }}</title>
<use xlink:href="#gdoc_brightness_dark"></use>
</svg>
<svg class="gdoc-icon gdoc_brightness_light">
<title>{{ i18n "button_toggle_dark" }}</title>
<use xlink:href="#gdoc_brightness_light"></use>
</svg>
<svg class="gdoc-icon gdoc_brightness_auto">
<title>{{ i18n "button_toggle_dark" }}</title>
<use xlink:href="#gdoc_brightness_auto"></use>
</svg>
</span>
<span class="gdoc-menu-header__home">
<a href="{{ .Root.Site.Home.Permalink }}" class="gdoc-header__link">
<svg class="gdoc-icon gdoc_home">
<title>{{ i18n "button_homepage" }}</title>
<use xlink:href="#gdoc_home"></use>
</svg>
</a>
</span>
{{ partial "language" .Root }}
</span>
<span class="gdoc-menu-header__control">
<label for="menu-header-control">
<div tabindex="0" role="button" aria-pressed="false">
<input type="checkbox" class="hidden" id="menu-header-control" />
<svg class="gdoc-icon gdoc_keyboard_arrow_right">
<use xlink:href="#gdoc_keyboard_arrow_right"></use>
<title>{{ i18n "button_menu_close" }}</title>
</svg>
<svg class="gdoc-icon gdoc_keyboard_arrow_left">
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
<title>{{ i18n "button_menu_open" }}</title>
</svg>
</div>
</label>
</span>
</div>
</div>
</header>
================================================
FILE: layouts/partials/svg-icon-symbols.html
================================================
{{ range resources.Match "sprites/*.svg" }}
{{ printf "<!-- geekdoc include: %s -->" . | safeHTML }}
{{ .Content | safeHTML }}
{{ end }}
================================================
FILE: layouts/partials/utils/content.html
================================================
{{ $content := .Content }}
{{ $content = $content | replaceRE `<nav id="TableOfContents">\s*<ul>\s*<li>\s*<ul>` `<nav id="TableOfContents"><ul>` | replaceRE `</ul>\s*</li>\s*</ul>\s*</nav>` `</ul></nav>` | safeHTML }}
{{ $content = $content | replaceRE `(<table>(?:.|\n)+?</table>)` `<div class="table-wrap"> ${1} </div>` | safeHTML }}
{{ return $content }}
================================================
FILE: layouts/partials/utils/description.html
================================================
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
{{ $description := "" }}
{{ if .Description }}
{{ $description = .Description }}
{{ else }}
{{ if $isPage }}
{{ $description = .Summary }}
{{ else if .Site.Params.description }}
{{ $description = .Site.Params.description }}
{{ end }}
{{ end }}
{{ return $description }}
================================================
FILE: layouts/partials/utils/featured.html
================================================
{{ $img := "" }}
{{ with $source := ($.Resources.ByType "image").GetMatch "{*feature*,*cover*,*thumbnail*}" }}
{{ $featured := .Fill (printf "1200x630 %s" (default "Smart" .Params.anchor)) }}
{{ $img = $featured.Permalink }}
{{ else }}
{{ with default $.Site.Params.images $.Params.images }}
{{ $img = index . 0 | absURL }}
{{ end }}
{{ end }}
{{ return $img }}
================================================
FILE: layouts/partials/utils/title.html
================================================
{{ $title := "" }}
{{ if .Title }}
{{ $title = .Title }}
{{ else if and .IsSection .File }}
{{ $title = path.Base .File.Dir | humanize | title }}
{{ else if and .IsPage .File }}
{{ $title = .File.BaseFileName | humanize | title }}
{{ end }}
{{ return $title }}
================================================
FILE: layouts/posts/list.html
================================================
{{ define "main" }}
<div id="main-content" tabindex="-1">
{{ range .Paginator.Pages }}
<article class="gdoc-markdown gdoc-post">
<header class="gdoc-post__header">
<h1 class="gdoc-post__title">
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
</h1>
</header>
<section>
{{ .Summary }}
</section>
<div class="gdoc-post__readmore">
{{ if .Truncated }}
<a
class="flex-inline align-center fake-link"
title="{{ i18n "posts_read_more" }}"
href="{{ .RelPermalink }}"
>
{{ i18n "posts_read_more" }}
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
</a>
{{ end }}
</div>
<footer class="gdoc-post__footer">
<div class="flex flex-wrap align-center gdoc-post__meta">
{{ partial "posts/metadata.html" . }}
</div>
</footer>
</article>
{{ end }}
</div>
{{ partial "pagination.html" . }}
{{ end }}
{{ define "post-tag" }}
<span class="gdoc-post__tag">
<span class="gdoc-button">
<a
class="gdoc-button__link"
href="{{ .page.RelPermalink }}"
title="{{ i18n "posts_tagged_with" .name }}"
>
{{ .name }}
</a>
</span>
</span>
{{ end }}
================================================
FILE: layouts/posts/single.html
================================================
{{ define "main" }}
<article class="gdoc-post" id="main-content" tabindex="-1">
<header class="gdoc-post__header">
<h1 class="gdoc-post__title">{{ partial "utils/title" . }}</h1>
<div class="flex flex-wrap align-center gdoc-post__meta gdoc-post__meta--head">
{{ partial "posts/metadata.html" . }}
</div>
</header>
<section class="gdoc-markdown">
{{ partial "utils/content" . }}
</section>
</article>
{{ end }}
================================================
FILE: layouts/robots.txt
================================================
User-agent: *
Disallow: /tags/*
Sitemap: {{ "sitemap.xml" | absURL }}
================================================
FILE: layouts/shortcodes/audio.html
================================================
{{- $source := ($.Page.Resources.ByType "audio").GetMatch (printf "%s" (.Get "name")) }}
{{- $customAlt := .Get "alt" }}
{{- with $source }}
{{- $caption := default .Title $customAlt }}
<div class="flex justify-center">
<figure class="gdoc-markdown__figure">
<audio controls class="player" preload="auto">
<source src="{{ .Permalink }}" type="audio/mpeg">
</audio>
{{- with $caption }}
<figcaption>
{{ . }}
{{- with $source.Params.credits }}
{{ printf " (%s)" . | $.Page.RenderString }}
{{- end }}
</figcaption>
{{- end }}
</figure>
</div>
{{- end }}
================================================
FILE: layouts/shortcodes/avatar.html
================================================
{{- $source := ($.Page.Resources.ByType "image").GetMatch (printf "%s" (.Get "name")) }}
{{- $customAlt := .Get "alt" }}
{{- $customSize := .Get "size" | lower }}
{{- $customAnchor := default "smart" (.Get "anchor") | title }}
{{- $data := newScratch }}
{{- with $source }}
{{- $caption := default .Title $customAlt }}
{{- $isSVG := (eq .MediaType.SubType "svg") }}
{{- $origin := . -}}
{{- if $isSVG }}
{{- $data.SetInMap "size" "tiny" "160" }}
{{- $data.SetInMap "size" "small" "300" }}
{{- $data.SetInMap "size" "medium" "600" }}
{{- $data.SetInMap "size" "large" "900" }}
{{- else }}
{{- $data.SetInMap "size" "tiny" (printf "160x160 %s" $customAnchor) }}
{{- $data.SetInMap "size" "small" (printf "300x300 %s" $customAnchor) }}
{{- $data.SetInMap "size" "medium" (printf "600x600 %s" $customAnchor) }}
{{- $data.SetInMap "size" "large" (printf "900x900 %s" $customAnchor) }}
{{- end -}}
<div class="flex justify-center">
<figure
class="gdoc-markdown__figure gdoc-markdown__figure--round">
<a class="gdoc-markdown__link--raw" href="{{ .Permalink }}">
<picture>
{{- $size := $data.Get "size" }}
{{- if not $isSVG }}
{{- if ne $customSize "origin" }}
<source
{{- if $customSize }}
srcset="{{ ($origin.Fill (index $size $customSize)).Permalink }}"
{{- else }}
srcset="{{ ($origin.Fill (index $size "small")).Permalink }} 600w, {{ ($origin.Fill (index $size "medium")).Permalink }} 1200w" sizes="100vw"
{{- end }}
/>
{{- end }}
{{- end }}
<img
{{- if $isSVG }}
src="{{ $origin.Permalink }}" width="{{ index $size (default "medium" $customSize) }}"
{{- else }}
{{- if eq $customSize "origin" }}
src="{{ $origin.Permalink }}"
{{- else }}
src="{{ ($origin.Fill (index $size "large")).Permalink }}"
{{- end }}
alt="{{ $caption }}"
{{- end }}
/>
</picture>
</a>
</figure>
</div>
{{- end }}
================================================
FILE: layouts/shortcodes/button.html
================================================
{{- $ref := "" }}
{{- $class := "" }}
{{- $size := default "regular" (.Get "size" | lower) }}
{{- if not (in (slice "regular" "large") $size) }}
{{- $size = "regular" }}
{{- end }}
{{- with .Get "href" }}
{{- $ref = . }}
{{- end }}
{{- with .Get "relref" }}
{{- $ref = relref $ . }}
{{- end }}
{{- with .Get "class" }}
{{- $class = . }}
{{- end }}
<span class="gdoc-button gdoc-button--{{ $size }}{{ with $class }}{{ printf " %s" . }}{{ end }}">
<a
class="gdoc-button__link"
{{- with $ref }}{{ printf " href=\"%s\"" . | safeHTMLAttr }}{{ end }}
>
{{ $.Inner }}
</a>
</span>
================================================
FILE: layouts/shortcodes/columns.html
================================================
{{- $size := default "regular" (.Get "size" | lower) }}
{{- if not (in (slice "regular" "large" "small") $size) }}
{{- $size = "regular" }}
{{- end }}
<div class="gdoc-columns gdoc-columns--{{ $size }} flex gap-16 flex-mobile-column">
{{- range split .Inner "<--->" }}
<div class="gdoc-columns__content gdoc-markdown--nested flex-even">
{{ . | $.Page.RenderString -}}
</div>
{{- end }}
</div>
================================================
FILE: layouts/shortcodes/expand.html
================================================
{{ $id := substr (sha1 .Inner) 0 8 }}
<div class="gdoc-expand">
<label class="gdoc-expand__head flex justify-between" for="{{ $id }}-{{ .Ordinal }}">
<span>{{ default "Expand" (.Get 0) }}</span>
<span>{{ default "↕" (.Get 1) }}</span>
</label>
<input id="{{ $id }}-{{ .Ordinal }}" type="checkbox" class="gdoc-expand__control hidden" />
<div class="gdoc-markdown--nested gdoc-expand__content">
{{ .Inner | $.Page.RenderString }}
</div>
</div>
gitextract_qte0gx_s/ ├── .cspell.json ├── .github/ │ └── settings.yaml ├── .gitignore ├── .gitsv/ │ └── config.yaml ├── .htmlvalidate.json ├── .jsbeautifyrc ├── .lighthouserc.yaml ├── .lycheeignore ├── .markdownlint.yaml ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .tarignore ├── .woodpecker/ │ ├── build-package.yaml │ ├── docs.yaml │ └── static.yaml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── archetypes/ │ ├── docs.md │ └── posts.md ├── assets/ │ └── search/ │ ├── config.json │ └── data.json ├── eslint.config.js ├── exampleSite/ │ ├── config/ │ │ └── _default/ │ │ ├── hugo.yaml │ │ ├── languages.yaml │ │ └── params.yaml │ ├── content/ │ │ └── en/ │ │ ├── _includes/ │ │ │ ├── _index.md │ │ │ └── include-page.md │ │ ├── _index.md │ │ ├── asciidoc/ │ │ │ ├── admonition-icons.adoc │ │ │ └── admonitions.adoc │ │ ├── collapse/ │ │ │ ├── _index.md │ │ │ ├── level-1/ │ │ │ │ ├── _index.md │ │ │ │ ├── level-1-1.md │ │ │ │ └── level-1-2.md │ │ │ └── level-2/ │ │ │ ├── _index.md │ │ │ ├── level-2-1.md │ │ │ └── level-2-2.md │ │ ├── features/ │ │ │ ├── _index.md │ │ │ ├── code-blocks.md │ │ │ ├── dark-mode/ │ │ │ │ └── _index.md │ │ │ ├── icon-sets.md │ │ │ ├── multilingual/ │ │ │ │ └── _index.md │ │ │ └── theming/ │ │ │ └── _index.md │ │ ├── posts/ │ │ │ ├── _index.md │ │ │ ├── hello_geekdoc.md │ │ │ └── initial-release.md │ │ ├── shortcodes/ │ │ │ ├── _index.md │ │ │ ├── audio/ │ │ │ │ └── _index.md │ │ │ ├── avatar/ │ │ │ │ └── _index.md │ │ │ ├── buttons.md │ │ │ ├── columns.md │ │ │ ├── expand.md │ │ │ ├── hints.md │ │ │ ├── icons.md │ │ │ ├── images/ │ │ │ │ └── _index.md │ │ │ ├── includes.md │ │ │ ├── katex.md │ │ │ ├── mermaid.md │ │ │ ├── progress.md │ │ │ ├── propertylist.md │ │ │ ├── tabs.md │ │ │ ├── toc-tree.md │ │ │ └── toc.md │ │ ├── toc-tree/ │ │ │ ├── _index.md │ │ │ ├── level-1/ │ │ │ │ ├── _index.md │ │ │ │ ├── level-1-1.md │ │ │ │ ├── level-1-2.md │ │ │ │ └── level-1-3/ │ │ │ │ ├── _index.md │ │ │ │ └── level-1-3-1.md │ │ │ └── level-2/ │ │ │ ├── _index.md │ │ │ ├── level-2-1.md │ │ │ └── level-2-2.md │ │ └── usage/ │ │ ├── _index.md │ │ ├── configuration.md │ │ ├── customization.md │ │ ├── getting-started.md │ │ └── menus.md │ ├── data/ │ │ ├── menu/ │ │ │ ├── extra.yaml │ │ │ ├── main.yaml │ │ │ └── more.yaml │ │ └── properties/ │ │ ├── demo.yaml │ │ ├── shortcode-audio.yaml │ │ ├── shortcode-avatar.yaml │ │ ├── shortcode-buttons.yaml │ │ ├── shortcode-columns.yaml │ │ ├── shortcode-hints.yaml │ │ ├── shortcode-images.yaml │ │ ├── shortcode-includes.yaml │ │ ├── shortcode-katex.yaml │ │ ├── shortcode-mermaid.yaml │ │ ├── shortcode-progress.yaml │ │ ├── shortcode-propertylist.yaml │ │ ├── shortcode-toc-tree.yaml │ │ └── shortcode-toc.yaml │ ├── layouts/ │ │ └── shortcodes/ │ │ └── sprites.html │ └── static/ │ ├── .htaccess │ ├── _includes/ │ │ ├── example.html.part │ │ └── example.md.part │ ├── custom.css │ └── custom.css.example ├── i18n/ │ ├── am.yaml │ ├── cs.yaml │ ├── da.yaml │ ├── de.yaml │ ├── en.yaml │ ├── es.yaml │ ├── fr.yaml │ ├── it.yaml │ ├── ja.yaml │ ├── nl.yaml │ ├── oc.yaml │ └── zh-cn.yaml ├── layouts/ │ ├── 404.html │ ├── _default/ │ │ ├── _markup/ │ │ │ ├── render-codeblock-mermaid.html │ │ │ ├── render-heading.html │ │ │ ├── render-image.html │ │ │ └── render-link.html │ │ ├── baseof.html │ │ ├── list.html │ │ ├── single.html │ │ ├── taxonomy.html │ │ └── terms.html │ ├── partials/ │ │ ├── foot.html │ │ ├── head/ │ │ │ ├── custom.html │ │ │ ├── favicons.html │ │ │ ├── meta.html │ │ │ ├── microformats.html │ │ │ ├── others.html │ │ │ └── rel-me.html │ │ ├── language.html │ │ ├── menu-bundle-np.html │ │ ├── menu-bundle.html │ │ ├── menu-extra.html │ │ ├── menu-filetree-np.html │ │ ├── menu-filetree.html │ │ ├── menu.html │ │ ├── microformats/ │ │ │ ├── opengraph.html │ │ │ ├── schema.html │ │ │ └── twitter_cards.html │ │ ├── page-header.html │ │ ├── page-metadata.html │ │ ├── pagination.html │ │ ├── posts/ │ │ │ └── metadata.html │ │ ├── search.html │ │ ├── site-footer.html │ │ ├── site-header.html │ │ ├── svg-icon-symbols.html │ │ └── utils/ │ │ ├── content.html │ │ ├── description.html │ │ ├── featured.html │ │ └── title.html │ ├── posts/ │ │ ├── list.html │ │ └── single.html │ ├── robots.txt │ └── shortcodes/ │ ├── audio.html │ ├── avatar.html │ ├── button.html │ ├── columns.html │ ├── expand.html │ ├── gist.html │ ├── hint.html │ ├── icon.html │ ├── img.html │ ├── include.html │ ├── katex.html │ ├── mermaid.html │ ├── progress.html │ ├── propertylist.html │ ├── tab.html │ ├── tabs.html │ ├── toc-tree.html │ └── toc.html ├── package.json ├── renovate.json ├── src/ │ ├── js/ │ │ ├── accessibility.js │ │ ├── colorTheme.js │ │ ├── config.js │ │ ├── index.js │ │ ├── katex.js │ │ ├── mermaid.js │ │ └── search.js │ ├── sass/ │ │ ├── _asciidoc.scss │ │ ├── _base.scss │ │ ├── _chroma_base.scss │ │ ├── _chroma_dark.scss │ │ ├── _chroma_light.scss │ │ ├── _color_mode.scss │ │ ├── _defaults.scss │ │ ├── _fonts.scss │ │ ├── _markdown.scss │ │ ├── _mobile.scss │ │ ├── _normalize.css │ │ ├── _print.scss │ │ ├── _shortcodes.scss │ │ ├── _utils.scss │ │ ├── main.scss │ │ ├── mobile.scss │ │ └── print.scss │ └── static/ │ └── custom.css ├── svgsprite.config.json ├── theme.toml ├── webpack.config.js └── webpack.plugins.js
SYMBOL INDEX (22 symbols across 4 files)
FILE: src/js/config.js
constant COLOR_THEME_DARK (line 1) | const COLOR_THEME_DARK = "dark"
constant COLOR_THEME_LIGHT (line 2) | const COLOR_THEME_LIGHT = "light"
constant COLOR_THEME_AUTO (line 3) | const COLOR_THEME_AUTO = "auto"
constant THEME (line 4) | const THEME = "hugo-geekdoc"
constant TOGGLE_COLOR_THEMES (line 5) | const TOGGLE_COLOR_THEMES = [COLOR_THEME_AUTO, COLOR_THEME_DARK, COLOR_T...
FILE: src/js/search.js
function init (line 54) | function init(input, searchConfig) {
function search (line 80) | function search(input, results, searchConfig) {
function createLinks (line 152) | function createLinks(pages, target, showDesc) {
function fetchErrors (line 198) | function fetchErrors(response) {
function getJson (line 205) | function getJson(src, callback) {
function flattenHits (line 222) | function flattenHits(results) {
function urlPath (line 243) | function urlPath(rawURL) {
function combineURLs (line 258) | function combineURLs(baseURL, relativeURL) {
FILE: webpack.config.js
method generate (line 87) | generate(seed, files) {
FILE: webpack.plugins.js
class SRIPlugin (line 10) | class SRIPlugin {
method constructor (line 16) | constructor(options = {}) {
method apply (line 36) | apply(compiler) {
class GitVersionPlugin (line 57) | class GitVersionPlugin {
method constructor (line 62) | constructor(options = {}) {
method apply (line 80) | apply(compiler) {
method version (line 125) | async version() {
method getBranchAndHash (line 137) | async getBranchAndHash() {
Condensed preview — 206 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (303K chars).
[
{
"path": ".cspell.json",
"chars": 965,
"preview": "{\n \"version\": \"0.2\",\n \"language\": \"en\",\n \"dictionaries\": [\"en_us\", \"softwareTerms\", \"companies\", \"bash\", \"html\", \"css"
},
{
"path": ".github/settings.yaml",
"chars": 1493,
"preview": "repository:\n name: hugo-geekdoc\n description: Hugo theme made for documentation\n homepage: https://geekdocs.de\n topi"
},
{
"path": ".gitignore",
"chars": 395,
"preview": "# local environments\n.swp\n.env*\n/dist/\n/build/\n/node_modules/\n/lhci_reports/\n/exampleSite/themes/\n/exampleSite/public/\n/"
},
{
"path": ".gitsv/config.yaml",
"chars": 1012,
"preview": "---\nversion: \"1.1\"\n\nversioning:\n update-major: []\n update-minor: [feat]\n update-patch: [fix, perf, refactor, chore, t"
},
{
"path": ".htmlvalidate.json",
"chars": 204,
"preview": "{\n \"extends\": [\"html-validate:standard\"],\n \"rules\": {\n \"element-required-content\": \"off\",\n \"element-permitted-co"
},
{
"path": ".jsbeautifyrc",
"chars": 230,
"preview": "{\n \"indent_size\": 4,\n \"indent_char\": \" \",\n \"preserve_newlines\": false,\n \"unformatted\": [\"svg\"],\n \"content"
},
{
"path": ".lighthouserc.yaml",
"chars": 2181,
"preview": "---\nci:\n collect:\n numberOfRuns: 3\n staticDistDir: exampleSite/public\n url:\n - http://localhost/\n - "
},
{
"path": ".lycheeignore",
"chars": 118,
"preview": "https://github.com/thegeeklab/.+/edit/main/.*\nhttps://unsplash.com.*\nhttps://www.color-hex.com.*\nhttps://geekdocs.de/\n"
},
{
"path": ".markdownlint.yaml",
"chars": 106,
"preview": "---\ndefault: True\nMD013: False\nMD041: False\nMD042: False\nMD004:\n style: dash\nMD010:\n code_blocks: False\n"
},
{
"path": ".npmrc",
"chars": 45,
"preview": "loglevel=error\nfund=false\nengine-strict=true\n"
},
{
"path": ".nvmrc",
"chars": 6,
"preview": "lts/*\n"
},
{
"path": ".prettierignore",
"chars": 99,
"preview": "_normalize.css\nlist.json.json\n/.lighthouseci/\n/themes/\n/static/js/\n/src/favicon/\nLICENSE\n**/*.html\n"
},
{
"path": ".prettierrc",
"chars": 91,
"preview": "{\n \"printWidth\": 99,\n \"singleQuote\": false,\n \"semi\": false,\n \"trailingComma\": \"none\"\n}\n"
},
{
"path": ".tarignore",
"chars": 252,
"preview": ".envrc\n.nvmrc\n.npmrc\n.tarignore\n.git*\n.woodpecker*\n.lighthouse*\n.markdownlint*\n.jsbeautify*\n.prettier*\n.htmlvalidate*\n.l"
},
{
"path": ".woodpecker/build-package.yaml",
"chars": 1098,
"preview": "---\nwhen:\n - event: [pull_request, tag]\n - event: [push, manual]\n branch:\n - ${CI_REPO_DEFAULT_BRANCH}\n\nsteps:"
},
{
"path": ".woodpecker/docs.yaml",
"chars": 1800,
"preview": "---\nwhen:\n - event: [pull_request, tag]\n - event: [push, manual]\n branch:\n - ${CI_REPO_DEFAULT_BRANCH}\n\nsteps:"
},
{
"path": ".woodpecker/static.yaml",
"chars": 1878,
"preview": "---\nwhen:\n - event: [pull_request, tag]\n - event: [push, manual]\n branch:\n - ${CI_REPO_DEFAULT_BRANCH}\n\nsteps:"
},
{
"path": "CONTRIBUTING.md",
"chars": 1654,
"preview": "# Contributing\n\n## Security\n\nIf you think you have found a **security issue**, please do not mention it in this reposito"
},
{
"path": "LICENSE",
"chars": 1123,
"preview": "MIT License\n\nCopyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>\n\nPermission is hereby granted, free of charge, to an"
},
{
"path": "README.md",
"chars": 3117,
"preview": "# Geekdoc\n\n[](https://ci.thegeekl"
},
{
"path": "archetypes/docs.md",
"chars": 125,
"preview": "---\ntitle: \"{{ .Name | humanize | title }}\"\nweight: 1\n# geekdocFlatSection: false\n# geekdocToc: 6\n# geekdocHidden: false"
},
{
"path": "archetypes/posts.md",
"chars": 71,
"preview": "---\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\ndate: {{ .Date }}\n---\n"
},
{
"path": "assets/search/config.json",
"chars": 512,
"preview": "{{- $searchDataFile := printf \"search/%s.data.json\" .Language.Lang -}}\n{{- $searchData := resources.Get \"search/data.jso"
},
{
"path": "assets/search/data.json",
"chars": 491,
"preview": "[\n {{ range $index, $page := (where .Site.Pages \"Params.geekdocProtected\" \"ne\" true) }}\n {{ if ne $index 0 }},{{ end"
},
{
"path": "eslint.config.js",
"chars": 1127,
"preview": "import eslint from \"@eslint/js\"\nimport globals from \"globals\"\nimport eslintPluginPrettierRecommended from \"eslint-plugin"
},
{
"path": "exampleSite/config/_default/hugo.yaml",
"chars": 578,
"preview": "---\nbaseURL: https://geekdocs.de/\ntitle: Geekdocs\ntheme: hugo-geekdoc\n\npygmentsUseClasses: true\npygmentsCodeFences: true"
},
{
"path": "exampleSite/config/_default/languages.yaml",
"chars": 74,
"preview": "---\nen:\n languageName: \"English\"\n contentDir: \"content/en\"\n weight: 10\n"
},
{
"path": "exampleSite/config/_default/params.yaml",
"chars": 791,
"preview": "---\n# cspell:ignore socialmedia2\n\ndescription: >\n Geekdoc is a simple Hugo theme for documentations. It is intentionall"
},
{
"path": "exampleSite/content/en/_includes/_index.md",
"chars": 28,
"preview": "---\ngeekdocHidden: true\n---\n"
},
{
"path": "exampleSite/content/en/_includes/include-page.md",
"chars": 211,
"preview": "_**Example page include**_\n\n{{< hint type=note >}}\n**Example Shortcode**\\\nShortcode used in an include page.\n{{< /hint >"
},
{
"path": "exampleSite/content/en/_index.md",
"chars": 2336,
"preview": "---\ntitle: Welcome to the documentation\ngeekdocNav: false\ngeekdocAlign: center\ngeekdocAnchor: false\n---\n\n<!-- markdownli"
},
{
"path": "exampleSite/content/en/asciidoc/admonition-icons.adoc",
"chars": 1026,
"preview": "+++\ntitle = \"Admonition Icons\"\n+++\n\n:icons: font\n\nBy default, the admonition is rendered with a plain text label. To ena"
},
{
"path": "exampleSite/content/en/asciidoc/admonitions.adoc",
"chars": 1888,
"preview": "+++\ntitle = \"Admonitions\"\n+++\n\n// cspell:ignore toclevels\n\n:toc:\n:toclevels: 2\n\n{{< toc >}}\n\n== Admonition types\n\nThere "
},
{
"path": "exampleSite/content/en/collapse/_index.md",
"chars": 85,
"preview": "---\ntitle: Collapse\ngeekdocCollapseSection: true\n---\n\nDemo collapsible menu entries.\n"
},
{
"path": "exampleSite/content/en/collapse/level-1/_index.md",
"chars": 75,
"preview": "Level 1\n\n<!-- cspell:disable -->\n\n{{< toc-tree >}}\n\n<!-- cspell:enable -->\n"
},
{
"path": "exampleSite/content/en/collapse/level-1/level-1-1.md",
"chars": 36,
"preview": "---\ntitle: Level 1.1\n---\n\nLevel 1.1\n"
},
{
"path": "exampleSite/content/en/collapse/level-1/level-1-2.md",
"chars": 36,
"preview": "---\ntitle: Level 1.2\n---\n\nLevel 1.2\n"
},
{
"path": "exampleSite/content/en/collapse/level-2/_index.md",
"chars": 46,
"preview": "---\ngeekdocCollapseSection: true\n---\n\nLevel-2\n"
},
{
"path": "exampleSite/content/en/collapse/level-2/level-2-1.md",
"chars": 36,
"preview": "---\ntitle: Level 2.1\n---\n\nLevel 2.1\n"
},
{
"path": "exampleSite/content/en/collapse/level-2/level-2-2.md",
"chars": 36,
"preview": "---\ntitle: Level 2.2\n---\n\nLevel 2.2\n"
},
{
"path": "exampleSite/content/en/features/_index.md",
"chars": 36,
"preview": "---\ntitle: Features\nweight: -15\n---\n"
},
{
"path": "exampleSite/content/en/features/code-blocks.md",
"chars": 2265,
"preview": "---\ntitle: Code Blocks\n---\n\nThere are several ways to add code blocks. Most of them work out of the box, only the Hugo s"
},
{
"path": "exampleSite/content/en/features/dark-mode/_index.md",
"chars": 1365,
"preview": "---\ntitle: Dark Mode\n---\n\nSay hello to the dark mode of the Geekdoc theme!\n\n[ for better rea"
},
{
"path": "exampleSite/content/en/shortcodes/expand.md",
"chars": 1037,
"preview": "---\ntitle: Expand\n---\n\nExpand shortcode can help to decrease clutter on screen by hiding part of text. Expand content by"
},
{
"path": "exampleSite/content/en/shortcodes/hints.md",
"chars": 2175,
"preview": "---\ntitle: Hints\n---\n\nHint shortcode can be used as hint/alerts/notification block.\n\n## Usage\n\n<!-- prettier-ignore-star"
},
{
"path": "exampleSite/content/en/shortcodes/icons.md",
"chars": 677,
"preview": "---\ntitle: Icons\n---\n\nSimple shortcode to include icons from SVG sprites outside of menus.\n\n## Usage\n\n<!-- prettier-igno"
},
{
"path": "exampleSite/content/en/shortcodes/images/_index.md",
"chars": 5136,
"preview": "---\ntitle: Images\nresources:\n - name: forest-1\n src: \"forest-1.jpg\"\n title: Forest (1)\n params:\n credits:"
},
{
"path": "exampleSite/content/en/shortcodes/includes.md",
"chars": 3128,
"preview": "---\ntitle: Includes\n---\n\nInclude shortcode can include files of different types. By specifying a language, the included "
},
{
"path": "exampleSite/content/en/shortcodes/katex.md",
"chars": 788,
"preview": "---\ntitle: KaTeX\n# cspell:ignore infty\n---\n\n[KaTeX](https://katex.org/) shortcode let you render math typesetting in mar"
},
{
"path": "exampleSite/content/en/shortcodes/mermaid.md",
"chars": 1537,
"preview": "---\ntitle: Mermaid\n---\n\n[Mermaid](https://mermaidjs.github.io/) is library for generating SVG charts and diagrams from t"
},
{
"path": "exampleSite/content/en/shortcodes/progress.md",
"chars": 930,
"preview": "---\ntitle: Progress\n---\n\nA progress bar shows how far a process has progressed.\n\n## Usage\n\n<!-- prettier-ignore -->\n```t"
},
{
"path": "exampleSite/content/en/shortcodes/propertylist.md",
"chars": 1045,
"preview": "---\ntitle: Properties\n---\n\nThe property list shortcode creates a custom HTML description list that can be used to displa"
},
{
"path": "exampleSite/content/en/shortcodes/tabs.md",
"chars": 1541,
"preview": "---\ntitle: Tabs\n---\n\nTabs let you organize content by context, for example installation instructions for each supported "
},
{
"path": "exampleSite/content/en/shortcodes/toc-tree.md",
"chars": 683,
"preview": "---\ntitle: ToC-Tree\n---\n\nThe `toc-tree` shortcode will generate a Table of Content from a section file tree of your cont"
},
{
"path": "exampleSite/content/en/shortcodes/toc.md",
"chars": 1820,
"preview": "---\ntitle: ToC\n---\n\nSimple wrapper to generate a page Table of Content from a shortcode.\n\n## Usage\n\n<!-- prettier-ignore"
},
{
"path": "exampleSite/content/en/toc-tree/_index.md",
"chars": 243,
"preview": "---\ntitle: ToC-Tree\ngeekdocFlatSection: true\n---\n\nThis is just a demo section for the <!-- cspell:disable -->[toc-tree]("
},
{
"path": "exampleSite/content/en/toc-tree/level-1/_index.md",
"chars": 113,
"preview": "---\ngeekdocCollapseSection: true\n---\n\nLevel 1\n\n<!-- cspell:disable -->\n\n{{< toc-tree >}}\n\n<!-- cspell:enable -->\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-1/level-1-1.md",
"chars": 36,
"preview": "---\ntitle: Level 1.1\n---\n\nLevel 1.1\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-1/level-1-2.md",
"chars": 36,
"preview": "---\ntitle: Level 1.2\n---\n\nLevel 1.2\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-1/level-1-3/_index.md",
"chars": 103,
"preview": "---\ntitle: Level 1.3\n---\n\nLevel 1.3\n\n<!-- cspell:disable -->\n\n{{< toc-tree >}}\n\n<!-- cspell:enable -->\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-1/level-1-3/level-1-3-1.md",
"chars": 40,
"preview": "---\ntitle: Level 1.3.1\n---\n\nLevel 1.3.1\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-2/_index.md",
"chars": 8,
"preview": "Level-2\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-2/level-2-1.md",
"chars": 36,
"preview": "---\ntitle: Level 2.1\n---\n\nLevel 2.1\n"
},
{
"path": "exampleSite/content/en/toc-tree/level-2/level-2-2.md",
"chars": 36,
"preview": "---\ntitle: Level 2.2\n---\n\nLevel 2.2\n"
},
{
"path": "exampleSite/content/en/usage/_index.md",
"chars": 33,
"preview": "---\ntitle: Usage\nweight: -20\n---\n"
},
{
"path": "exampleSite/content/en/usage/configuration.md",
"chars": 15068,
"preview": "---\ntitle: Configuration\nweight: -10\n# cspell:ignore expirydate linktitle publishdate\n---\n\n{{< toc >}}\n\n## Site configur"
},
{
"path": "exampleSite/content/en/usage/customization.md",
"chars": 646,
"preview": "---\ntitle: Customization\n---\n\n{{< toc >}}\n\n## Custom resources\n\nTo add custom resources to your site e.g. CSS or JavaScr"
},
{
"path": "exampleSite/content/en/usage/getting-started.md",
"chars": 7429,
"preview": "---\ntitle: Getting Started\nweight: -20\n# cspell:ignore demosite testlink gohugoio\n---\n\nThis page tells you how to get st"
},
{
"path": "exampleSite/content/en/usage/menus.md",
"chars": 3609,
"preview": "---\ntitle: Menus\n---\n\nThe theme supports two different kinds of menus. File-tree menu is the default one and does not re"
},
{
"path": "exampleSite/data/menu/extra.yaml",
"chars": 122,
"preview": "---\nheader:\n - name: GitHub\n ref: https://github.com/thegeeklab/hugo-geekdoc\n icon: gdoc_github\n external: tru"
},
{
"path": "exampleSite/data/menu/main.yaml",
"chars": 632,
"preview": "---\nmain:\n - name:\n en: Level 1 (EN)\n de: Level 1 (DE)\n sub:\n - name:\n en: Level 1.1 (EN)\n "
},
{
"path": "exampleSite/data/menu/more.yaml",
"chars": 319,
"preview": "---\nmore:\n - name: News\n ref: \"/posts\"\n icon: \"gdoc_notification\"\n - name: Releases\n ref: \"https://github.com"
},
{
"path": "exampleSite/data/properties/demo.yaml",
"chars": 715,
"preview": "---\nproperties:\n - name: prop1\n type: string\n description: Dummy description of the prop1 string property.\n re"
},
{
"path": "exampleSite/data/properties/shortcode-audio.yaml",
"chars": 141,
"preview": "---\nproperties:\n - name: name\n type: string\n description: Name of the audio resource defined in page front matter"
},
{
"path": "exampleSite/data/properties/shortcode-avatar.yaml",
"chars": 570,
"preview": "---\nproperties:\n - name: name\n type: string\n description: Name of the image resource defined in page front matter"
},
{
"path": "exampleSite/data/properties/shortcode-buttons.yaml",
"chars": 663,
"preview": "---\nproperties:\n - name: href\n type: string\n description: The URL to use as target of the button.\n required: f"
},
{
"path": "exampleSite/data/properties/shortcode-columns.yaml",
"chars": 205,
"preview": "---\nproperties:\n - name: size\n type: string\n description: Preset of different sizes for the _first_ column. Suppo"
},
{
"path": "exampleSite/data/properties/shortcode-hints.yaml",
"chars": 434,
"preview": "---\nproperties:\n - name: type\n type: string\n description: Type of the hint. Supported values are `note|tip|import"
},
{
"path": "exampleSite/data/properties/shortcode-images.yaml",
"chars": 514,
"preview": "---\nproperties:\n - name: name\n type: string\n description: Name of the image resource defined in page front matter"
},
{
"path": "exampleSite/data/properties/shortcode-includes.yaml",
"chars": 731,
"preview": "---\nproperties:\n - name: file\n type: string\n description: Path of the file (relative to the Hugo root) to include"
},
{
"path": "exampleSite/data/properties/shortcode-katex.yaml",
"chars": 134,
"preview": "---\nproperties:\n - name: class\n type: list\n description: List of space-separated CSS class names to apply.\n re"
},
{
"path": "exampleSite/data/properties/shortcode-mermaid.yaml",
"chars": 134,
"preview": "---\nproperties:\n - name: class\n type: list\n description: List of space-separated CSS class names to apply.\n re"
},
{
"path": "exampleSite/data/properties/shortcode-progress.yaml",
"chars": 684,
"preview": "---\nproperties:\n - name: type\n type: string\n description: Color type of the progress bar. Supported values are `m"
},
{
"path": "exampleSite/data/properties/shortcode-propertylist.yaml",
"chars": 408,
"preview": "---\nproperties:\n - name: name\n type: string\n description: Name of the file from the `data/properties/` directory."
},
{
"path": "exampleSite/data/properties/shortcode-toc-tree.yaml",
"chars": 260,
"preview": "---\nproperties:\n - name: sortBy\n type: string\n description: |\n Override the default sort parameter set by [`"
},
{
"path": "exampleSite/data/properties/shortcode-toc.yaml",
"chars": 495,
"preview": "---\nproperties:\n - name: format\n type: string\n description: |\n Format of the returned ToC. The `html` format"
},
{
"path": "exampleSite/layouts/shortcodes/sprites.html",
"chars": 511,
"preview": "<div class=\"flex flex-wrap justify-center\">\n {{ range $key, $value := hugo.Data.sprites.geekdoc }}\n <div class=\"flex"
},
{
"path": "exampleSite/static/.htaccess",
"chars": 702,
"preview": "ErrorDocument 404 /404.html\n\nExpiresActive On\nExpiresDefault \"access plus 600 seconds\"\nExpiresByType text/css \"access pl"
},
{
"path": "exampleSite/static/_includes/example.html.part",
"chars": 126,
"preview": "<p>\n<i><b>Example HTML include</b></i>\n</p>\n\n<h4>This is heading 4</h4>\n<h5>This is heading 5</h5>\n<h6>This is heading 6"
},
{
"path": "exampleSite/static/_includes/example.md.part",
"chars": 160,
"preview": "_**Example Markdown include**_\n\nFile including a simple Markdown table.\n\n| Head 1 | Head 2 | Head 3 |\n| ------ | ------ "
},
{
"path": "exampleSite/static/custom.css",
"chars": 290,
"preview": ":root {\n --code-max-height: 60rem;\n}\n\n.icon-grid {\n width: 8rem;\n height: 8rem;\n margin: 0.2em;\n text-align: center"
},
{
"path": "exampleSite/static/custom.css.example",
"chars": 3854,
"preview": "/* Global customization */\n\n:root {\n --code-max-height: 60rem;\n\n --header-font-family: \"DancingScript\";\n --body-font-"
},
{
"path": "i18n/am.yaml",
"chars": 1411,
"preview": "---\r\nedit_page: ገጹን ማስተካከያ\r\n\r\nnav_navigation: መሄጃ\r\nnav_tags: መለያዎች\r\nnav_more: ተጨማሪ\r\nnav_top: ወደ ላይ ተመለስ\r\n\r\nform_placehol"
},
{
"path": "i18n/cs.yaml",
"chars": 1619,
"preview": "---\nedit_page: Upravit stránku\n\nnav_navigation: Navigace\nnav_tags: Tagy\nnav_more: Více\nnav_top: Zpět nahoru\n\nform_placeh"
},
{
"path": "i18n/da.yaml",
"chars": 1518,
"preview": "---\nedit_page: Rediger side\n\nnav_navigation: Navigation\nnav_tags: Tags\nnav_more: Mere\nnav_top: Til toppen\n\nform_placehol"
},
{
"path": "i18n/de.yaml",
"chars": 1607,
"preview": "---\nedit_page: Seite bearbeiten\n\nnav_navigation: Navigation\nnav_tags: Tags\nnav_more: Weitere\nnav_top: Nach oben\n\nform_pl"
},
{
"path": "i18n/en.yaml",
"chars": 1498,
"preview": "---\nedit_page: Edit page\n\nnav_navigation: Navigation\nnav_tags: Tags\nnav_more: More\nnav_top: Back to top\n\nform_placeholde"
},
{
"path": "i18n/es.yaml",
"chars": 1624,
"preview": "---\nedit_page: Editar página\n\nnav_navigation: Navegación\nnav_tags: Etiquetas\nnav_more: Más\nnav_top: Inicio de la página\n"
},
{
"path": "i18n/fr.yaml",
"chars": 1637,
"preview": "---\nedit_page: Editer la page\n\nnav_navigation: Navigation\nnav_tags: Tags\nnav_more: Plus\nnav_top: Retour au haut de page\n"
},
{
"path": "i18n/it.yaml",
"chars": 1659,
"preview": "---\nedit_page: Modifica la pagina\n\nnav_navigation: Navigazione\nnav_tags: Etichette\nnav_more: Altro\nnav_top: Torna su\n\nfo"
},
{
"path": "i18n/ja.yaml",
"chars": 1290,
"preview": "---\nedit_page: ページの編集\n\nnav_navigation: ナビゲーション\nnav_tags: タグ\nnav_more: さらに\nnav_top: トップへ戻る\n\nform_placeholder_search: 検索\n\n"
},
{
"path": "i18n/nl.yaml",
"chars": 1600,
"preview": "---\nedit_page: Wijzig pagina\n\nnav_navigation: Navigatie\nnav_tags: Markering\nnav_more: Meer\nnav_top: Terug naar boven\n\nfo"
},
{
"path": "i18n/oc.yaml",
"chars": 1638,
"preview": "---\nedit_page: Modificar la pagina\n\nnav_navigation: Navegacion\nnav_tags: Etiquetas\nnav_more: Mai\nnav_top: Tornar ennaut\n"
},
{
"path": "i18n/zh-cn.yaml",
"chars": 1180,
"preview": "---\nedit_page: 编辑页面\n\nnav_navigation: 导航\nnav_tags: 标签\nnav_more: 更多\nnav_top: 回到顶部\n\nform_placeholder_search: 搜索\n\nerror_page"
},
{
"path": "layouts/404.html",
"chars": 1138,
"preview": "<!DOCTYPE html>\n<html lang=\"{{ .Site.Language.Lang }}\">\n <head>\n {{ partial \"head/meta\" . }}\n <title>{{ i18n \"err"
},
{
"path": "layouts/_default/_markup/render-codeblock-mermaid.html",
"chars": 366,
"preview": "<!-- prettier-ignore-start -->\n{{ if not (.Page.Scratch.Get \"mermaid\") }}\n <!-- Include mermaid only first time -->\n <"
},
{
"path": "layouts/_default/_markup/render-heading.html",
"chars": 1064,
"preview": "{{- $showAnchor := (and (default true .Page.Params.geekdocAnchor) (default true .Page.Site.Params.geekdocAnchor)) -}}\n\n\n"
},
{
"path": "layouts/_default/_markup/render-image.html",
"chars": 146,
"preview": "<img\n src=\"{{ .Destination | safeURL }}\"\n alt=\"{{ .Text }}\"\n {{ with .Title }}title=\"{{ . }}\"{{ end }}\n/>\n{{- /* Drop"
},
{
"path": "layouts/_default/_markup/render-link.html",
"chars": 402,
"preview": "{{- $raw := or (hasPrefix .Text \"<img\") (hasPrefix .Text \"<figure\") -}}\n{{- $code := hasPrefix .Text \"<code\" -}}\n<a\n cl"
},
{
"path": "layouts/_default/baseof.html",
"chars": 1894,
"preview": "<!DOCTYPE html>\n<html\n lang=\"{{ .Site.Language.Lang }}\"\n class=\"color-toggle-hidden\"\n {{ if default false .Site.Param"
},
{
"path": "layouts/_default/list.html",
"chars": 312,
"preview": "{{ define \"main\" }}\n {{ partial \"page-header\" . }}\n\n\n <article\n class=\"gdoc-markdown gdoc-markdown__align--{{ defau"
},
{
"path": "layouts/_default/single.html",
"chars": 348,
"preview": "{{ define \"main\" }}\n {{ partial \"page-header\" . }}\n\n\n <article\n class=\"gdoc-markdown gdoc-markdown__align--{{ defau"
},
{
"path": "layouts/_default/taxonomy.html",
"chars": 1331,
"preview": "{{ define \"main\" }}\n <div id=\"main-content\" tabindex=\"-1\">\n {{ range .Paginator.Pages }}\n <article class=\"gdoc-post"
},
{
"path": "layouts/_default/terms.html",
"chars": 1133,
"preview": "{{ define \"main\" }}\n <div id=\"main-content\" tabindex=\"-1\">\n {{ range .Paginator.Pages.ByTitle }}\n <article class=\"g"
},
{
"path": "layouts/partials/foot.html",
"chars": 0,
"preview": ""
},
{
"path": "layouts/partials/head/custom.html",
"chars": 289,
"preview": "<!--\nYou can add custom elements to the page header here.\n\nExample:\nEnsure to use the absolute path to custom files and "
},
{
"path": "layouts/partials/head/favicons.html",
"chars": 303,
"preview": "<link rel=\"icon\" type=\"image/svg+xml\" href=\"{{ \"favicon/favicon.svg\" | relURL }}\" />\n<link\n rel=\"icon\"\n type=\"image/pn"
},
{
"path": "layouts/partials/head/meta.html",
"chars": 502,
"preview": "<meta charset=\"UTF-8\" />\n<meta name=\"referrer\" content=\"no-referrer\" />\n<meta name=\"viewport\" content=\"width=device-widt"
},
{
"path": "layouts/partials/head/microformats.html",
"chars": 134,
"preview": "{{ partial \"microformats/opengraph.html\" . }}\n{{ partial \"microformats/twitter_cards.html\" . }}\n{{ partial \"microformats"
},
{
"path": "layouts/partials/head/others.html",
"chars": 1834,
"preview": "{{- if default true .Site.Params.geekdocDarkModeToggle }}\n <script src=\"{{ index (index hugo.Data.assets \"colortheme.js"
},
{
"path": "layouts/partials/head/rel-me.html",
"chars": 77,
"preview": "<!-- place to set your rel-me links https://microformats.org/wiki/rel-me -->\n"
},
{
"path": "layouts/partials/language.html",
"chars": 1669,
"preview": "{{ if hugo.IsMultilingual }}\n <span class=\"gdoc-language\">\n <ul class=\"gdoc-language__selector\" tabindex=\"0\" role=\"b"
},
{
"path": "layouts/partials/menu-bundle-np.html",
"chars": 2292,
"preview": "{{ $current := . }}\n{{ $site := .Site }}\n{{ $current.Scratch.Set \"prev\" false }}\n{{ $current.Scratch.Set \"getNext\" false"
},
{
"path": "layouts/partials/menu-bundle.html",
"chars": 3138,
"preview": "{{ $current := .current }}\n{{ template \"menu-file\" dict \"sect\" .source \"current\" $current \"site\" $current.Site }}\n\n\n<!--"
},
{
"path": "layouts/partials/menu-extra.html",
"chars": 1352,
"preview": "{{ $current := .current }}\n{{ template \"menu-extra\" dict \"sect\" .source \"current\" $current \"site\" $current.Site \"target\""
},
{
"path": "layouts/partials/menu-filetree-np.html",
"chars": 3578,
"preview": "{{ $current := . }}\n{{ $site := .Site }}\n{{ $current.Scratch.Set \"prev\" false }}\n{{ $current.Scratch.Set \"getNext\" false"
},
{
"path": "layouts/partials/menu-filetree.html",
"chars": 3624,
"preview": "{{ $current := . }}\n{{ template \"tree-nav\" dict \"sect\" .Site.Home.Sections \"current\" $current }}\n\n\n<!-- templates -->\n{{"
},
{
"path": "layouts/partials/menu.html",
"chars": 1335,
"preview": "<nav>\n {{ partial \"search\" . }}\n\n\n <section class=\"gdoc-nav--main\">\n <h2>{{ i18n \"nav_navigation\" }}</h2>\n {{ if"
},
{
"path": "layouts/partials/microformats/opengraph.html",
"chars": 2247,
"preview": "{{ $isPage := or (and (ne .Type \"posts\") (in \"section page\" .Kind )) (and (eq .Type \"posts\") (eq .Kind \"page\")) }}\n\n{{- "
},
{
"path": "layouts/partials/microformats/schema.html",
"chars": 2512,
"preview": "{{ $isPage := or (and (ne .Type \"posts\") (in \"section page\" .Kind )) (and (eq .Type \"posts\") (eq .Kind \"page\")) }}\n{{- i"
},
{
"path": "layouts/partials/microformats/twitter_cards.html",
"chars": 611,
"preview": "{{- with partial \"utils/featured\" . }}\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n{{- else }}\n <meta "
},
{
"path": "layouts/partials/page-header.html",
"chars": 2632,
"preview": "{{ $geekdocRepo := default (default false .Site.Params.geekdocRepo) .Page.Params.geekdocRepo }}\n{{ $geekdocEditPath := d"
},
{
"path": "layouts/partials/page-metadata.html",
"chars": 550,
"preview": "{{- $showPageLastmod := (or (default false .Page.Params.geekdocPageLastmod) (default false .Site.Params.geekdocPageLastm"
},
{
"path": "layouts/partials/pagination.html",
"chars": 822,
"preview": "{{ $page := $.Paginator }}\n\n\n<nav class=\"gdoc-paging flex flex-even align-center\" role=\"navigation\">\n <div class=\"gdoc-"
},
{
"path": "layouts/partials/posts/metadata.html",
"chars": 1503,
"preview": "<span class=\"flex align-center no-wrap\">\n <svg class=\"gdoc-icon gdoc_date\"><use xlink:href=\"#gdoc_date\"></use></svg>\n "
},
{
"path": "layouts/partials/search.html",
"chars": 928,
"preview": "{{ if default true .Site.Params.geekdocSearch }}\n <script defer src=\"{{ index (index hugo.Data.assets \"search.js\") \"src"
},
{
"path": "layouts/partials/site-footer.html",
"chars": 1727,
"preview": "<footer class=\"gdoc-footer\">\n <nav class=\"container flex\">\n <div>\n <section class=\"flex flex-wrap align-center\""
},
{
"path": "layouts/partials/site-header.html",
"chars": 3287,
"preview": "<header class=\"gdoc-header\">\n <div class=\"container flex align-center justify-between\">\n {{ if .MenuEnabled }}\n "
},
{
"path": "layouts/partials/svg-icon-symbols.html",
"chars": 141,
"preview": "{{ range resources.Match \"sprites/*.svg\" }}\n {{ printf \"<!-- geekdoc include: %s -->\" . | safeHTML }}\n {{ .Content | s"
},
{
"path": "layouts/partials/utils/content.html",
"chars": 360,
"preview": "{{ $content := .Content }}\n\n{{ $content = $content | replaceRE `<nav id=\"TableOfContents\">\\s*<ul>\\s*<li>\\s*<ul>` `<nav i"
},
{
"path": "layouts/partials/utils/description.html",
"chars": 403,
"preview": "{{ $isPage := or (and (ne .Type \"posts\") (in \"section page\" .Kind )) (and (eq .Type \"posts\") (eq .Kind \"page\")) }}\n{{ $d"
},
{
"path": "layouts/partials/utils/featured.html",
"chars": 376,
"preview": "{{ $img := \"\" }}\n\n{{ with $source := ($.Resources.ByType \"image\").GetMatch \"{*feature*,*cover*,*thumbnail*}\" }}\n {{ $fe"
},
{
"path": "layouts/partials/utils/title.html",
"chars": 269,
"preview": "{{ $title := \"\" }}\n\n{{ if .Title }}\n {{ $title = .Title }}\n{{ else if and .IsSection .File }}\n {{ $title = path.Base ."
},
{
"path": "layouts/posts/list.html",
"chars": 1321,
"preview": "{{ define \"main\" }}\n <div id=\"main-content\" tabindex=\"-1\">\n {{ range .Paginator.Pages }}\n <article class=\"gdoc-mark"
},
{
"path": "layouts/posts/single.html",
"chars": 462,
"preview": "{{ define \"main\" }}\n <article class=\"gdoc-post\" id=\"main-content\" tabindex=\"-1\">\n <header class=\"gdoc-post__header\">"
},
{
"path": "layouts/robots.txt",
"chars": 71,
"preview": "User-agent: *\nDisallow: /tags/*\n\nSitemap: {{ \"sitemap.xml\" | absURL }}\n"
},
{
"path": "layouts/shortcodes/audio.html",
"chars": 657,
"preview": "{{- $source := ($.Page.Resources.ByType \"audio\").GetMatch (printf \"%s\" (.Get \"name\")) }}\n{{- $customAlt := .Get \"alt\" }}"
},
{
"path": "layouts/shortcodes/avatar.html",
"chars": 2168,
"preview": "{{- $source := ($.Page.Resources.ByType \"image\").GetMatch (printf \"%s\" (.Get \"name\")) }}\n{{- $customAlt := .Get \"alt\" }}"
},
{
"path": "layouts/shortcodes/button.html",
"chars": 606,
"preview": "{{- $ref := \"\" }}\n{{- $class := \"\" }}\n{{- $size := default \"regular\" (.Get \"size\" | lower) }}\n\n{{- if not (in (slice \"re"
},
{
"path": "layouts/shortcodes/columns.html",
"chars": 416,
"preview": "{{- $size := default \"regular\" (.Get \"size\" | lower) }}\n\n{{- if not (in (slice \"regular\" \"large\" \"small\") $size) }}\n {{"
},
{
"path": "layouts/shortcodes/expand.html",
"chars": 464,
"preview": "{{ $id := substr (sha1 .Inner) 0 8 }}\n<div class=\"gdoc-expand\">\n <label class=\"gdoc-expand__head flex justify-between\" "
},
{
"path": "layouts/shortcodes/gist.html",
"chars": 155,
"preview": "<script src=\"https://gist.github.com/{{ index .Params 0 }}/{{ index .Params 1 }}.js{{if len .Params | eq 3 }}?file={{ in"
},
{
"path": "layouts/shortcodes/hint.html",
"chars": 576,
"preview": "{{- $type := default \"note\" (.Get \"type\") }}\n{{- $icon := .Get \"icon\" }}\n{{- $title := default ($type | title) (.Get \"ti"
},
{
"path": "layouts/shortcodes/icon.html",
"chars": 123,
"preview": "{{ $id := .Get 0 }}\n\n{{- with $id -}}\n <svg class=\"gdoc-icon {{ . }}\"><use xlink:href=\"#{{ . }}\"></use></svg>\n{{- end -"
},
{
"path": "layouts/shortcodes/img.html",
"chars": 2396,
"preview": "{{- $source := ($.Page.Resources.ByType \"image\").GetMatch (printf \"%s\" (.Get \"name\")) }}\n{{- $customAlt := .Get \"alt\" }}"
},
{
"path": "layouts/shortcodes/include.html",
"chars": 543,
"preview": "{{ $file := .Get \"file\" }}\n{{ $page := .Site.GetPage $file }}\n{{ $type := .Get \"type\" }}\n{{ $language := .Get \"language\""
},
{
"path": "layouts/shortcodes/katex.html",
"chars": 633,
"preview": "<!-- prettier-ignore-start -->\n{{ if not (.Page.Scratch.Get \"katex\") }}\n <!-- Include katex only first time -->\n <link"
},
{
"path": "layouts/shortcodes/mermaid.html",
"chars": 406,
"preview": "<!-- prettier-ignore-start -->\n{{ if not (.Page.Scratch.Get \"mermaid\") }}\n <!-- Include mermaid only first time -->\n <"
},
{
"path": "layouts/shortcodes/progress.html",
"chars": 812,
"preview": "{{- $value := default 0 (.Get \"value\") -}}\n{{- $label := default (printf \"%v %%\" $value) (.Get \"label\") -}}\n{{- $type :="
},
{
"path": "layouts/shortcodes/propertylist.html",
"chars": 2606,
"preview": "{{- $name := .Get \"name\" -}}\n{{- $sort := .Get \"sort\" -}}\n{{- $order := default \"asc\" (.Get \"order\") -}}\n{{- $showAnchor"
},
{
"path": "layouts/shortcodes/tab.html",
"chars": 375,
"preview": "{{- if .Parent }}\n {{- $name := .Get 0 }}\n {{- $group := printf \"tabs-%s\" (.Parent.Get 0) }}\n\n {{- if not (.Parent.Sc"
},
{
"path": "layouts/shortcodes/tabs.html",
"chars": 611,
"preview": "{{- if .Inner }}{{ end }}\n{{- $id := .Get 0 }}\n{{- $group := printf \"tabs-%s\" $id }}\n\n\n<div class=\"gdoc-tabs\">\n {{- ran"
},
{
"path": "layouts/shortcodes/toc-tree.html",
"chars": 2649,
"preview": "{{- $current := . }}\n{{- $tocLevels := default (default 6 .Site.Params.geekdocToC) .Page.Params.geekdocToC }}\n{{- $sortB"
},
{
"path": "layouts/shortcodes/toc.html",
"chars": 425,
"preview": "{{- $format := default \"html\" (.Get \"format\") }}\n{{- $tocLevels := default (default 6 .Site.Params.geekdocToC) .Page.Par"
},
{
"path": "package.json",
"chars": 3038,
"preview": "{\n \"name\": \"geekdoc\",\n \"version\": \"1.0.0\",\n \"description\": \"Hugo theme made for documentation\",\n \"main\": \"index.js\","
},
{
"path": "renovate.json",
"chars": 122,
"preview": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\"github>thegeeklab/renovate-presets\"]\n"
},
{
"path": "src/js/accessibility.js",
"chars": 1976,
"preview": "document.addEventListener(\"DOMContentLoaded\", () => {\n const gdocNav = document.querySelector(\".gdoc-nav\")\n const gdoc"
},
{
"path": "src/js/colorTheme.js",
"chars": 1683,
"preview": "import Storage from \"store2\"\nimport { TOGGLE_COLOR_THEMES, THEME, COLOR_THEME_AUTO } from \"./config.js\"\n\nconst applyThem"
},
{
"path": "src/js/config.js",
"chars": 246,
"preview": "export const COLOR_THEME_DARK = \"dark\"\nexport const COLOR_THEME_LIGHT = \"light\"\nexport const COLOR_THEME_AUTO = \"auto\"\ne"
},
{
"path": "src/js/index.js",
"chars": 1958,
"preview": "import Clipboard from \"clipboard\"\nimport \"./accessibility.js\"\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n c"
},
{
"path": "src/js/katex.js",
"chars": 135,
"preview": "import \"katex/dist/katex.css\"\nimport renderMathInElement from \"katex/dist/contrib/auto-render.mjs\"\n\nrenderMathInElement("
},
{
"path": "src/js/mermaid.js",
"chars": 993,
"preview": "import Storage from \"store2\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { COLOR_THEME_DARK, THEME, COLOR_THEME_AUTO } fr"
},
{
"path": "src/js/search.js",
"chars": 6678,
"preview": "import groupBy from \"lodash/groupBy.js\"\nimport truncate from \"lodash/truncate.js\"\nimport { Document, Charset } from \"fle"
},
{
"path": "src/sass/_asciidoc.scss",
"chars": 2055,
"preview": "@use \"sass:color\";\n@use \"defaults\";\n\n.admonitionblock {\n $root: &;\n\n margin: defaults.$padding-16 0;\n padding: 0;\n\n "
},
{
"path": "src/sass/_base.scss",
"chars": 14700,
"preview": "@use \"sass:meta\";\n@use \"sass:map\";\n@use \"color_mode\";\n@use \"defaults\";\n\n:root {\n --code-max-height: none;\n\n --header-f"
},
{
"path": "src/sass/_chroma_base.scss",
"chars": 981,
"preview": "@use \"defaults\";\n\n@mixin chroma_base {\n .chroma {\n color: var(--code-font-color);\n }\n .chroma .lntable td:nth-chil"
},
{
"path": "src/sass/_chroma_dark.scss",
"chars": 5539,
"preview": "@use \"chroma_base\";\n\n@mixin chroma_dark {\n /* Theme: Dracula */\n /* Background */\n @include chroma_base.chroma_base;\n"
},
{
"path": "src/sass/_chroma_light.scss",
"chars": 5990,
"preview": "@use \"chroma_base\";\n\n@mixin chroma_github {\n /* Theme: GitHub */\n /* Background */\n @include chroma_base.chroma_base;"
},
{
"path": "src/sass/_color_mode.scss",
"chars": 3463,
"preview": "@use \"sass:color\";\n@use \"sass:map\";\n@use \"chroma_dark\";\n@use \"chroma_light\";\n@use \"defaults\";\n\n@mixin color_theme_light "
},
{
"path": "src/sass/_defaults.scss",
"chars": 3037,
"preview": "@use \"sass:color\";\n\n// Used in layout\n$padding-2: 0.125rem !default;\n$padding-4: 0.25rem !default;\n$padding-8: 0.5rem !d"
},
{
"path": "src/sass/_fonts.scss",
"chars": 1825,
"preview": "@font-face {\n font-family: \"Liberation Sans\";\n src:\n url(\"fonts/LiberationSans-Bold.woff2\") format(\"woff2\"),\n ur"
},
{
"path": "src/sass/_markdown.scss",
"chars": 4271,
"preview": "@use \"defaults\";\n\n.gdoc-markdown {\n line-height: 1.6rem;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-weight: 600;\n\n "
},
{
"path": "src/sass/_mobile.scss",
"chars": 2063,
"preview": "@use \"defaults\";\n\n@media screen and (max-width: defaults.$sm-breakpoint) {\n .gdoc-nav {\n margin-left: -(defaults.$me"
},
{
"path": "src/sass/_normalize.css",
"chars": 6160,
"preview": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ==========================="
},
{
"path": "src/sass/_print.scss",
"chars": 800,
"preview": "@use \"defaults\";\n\n@media print {\n .gdoc-nav,\n .gdoc-footer .container span:not(:first-child),\n .gdoc-paging,\n .editp"
},
{
"path": "src/sass/_shortcodes.scss",
"chars": 6249,
"preview": "@use \"sass:color\";\n@use \"defaults\";\n\n// {{< expand \"Label\" \"icon\" >}}\n.gdoc-expand {\n margin: defaults.$padding-16 0;\n\n"
},
{
"path": "src/sass/_utils.scss",
"chars": 1240,
"preview": "@use \"defaults\";\n\n.flex {\n display: flex;\n}\n\n.flex-auto {\n flex: 1 1 auto;\n}\n\n.flex-25 {\n flex: 1 1 25%;\n}\n\n.flex-inl"
},
{
"path": "src/sass/main.scss",
"chars": 120,
"preview": "@use \"_normalize\";\n@use \"_utils\";\n@use \"_fonts\";\n@use \"_base\";\n\n@use \"_markdown\";\n@use \"_asciidoc\";\n@use \"_shortcodes\";\n"
},
{
"path": "src/sass/mobile.scss",
"chars": 54,
"preview": "@use \"sass:color\";\n\n@use \"_defaults\";\n@use \"_mobile\";\n"
}
]
// ... and 6 more files (download for full content)
About this extraction
This page contains the full source code of the thegeeklab/hugo-geekdoc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 206 files (267.4 KB), approximately 81.6k tokens, and a symbol index with 22 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.