docs: add hugo site

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
This commit is contained in:
David Karlsson 2023-10-11 11:59:20 +02:00
parent f7b3869062
commit e2ae76f1f2
291 changed files with 2833 additions and 2 deletions

5
.gitignore vendored
View File

@ -38,3 +38,8 @@ bin/*
.idea/*
tests/miniodata
# Docs
**/.hugo_build.lock
docs/resources
docs/public

View File

@ -94,3 +94,20 @@ target "image-all" {
"linux/s390x"
]
}
target "_common_docs" {
dockerfile = "./dockerfiles/docs.Dockerfile"
}
target "docs-export" {
inherits = ["_common_docs"]
target = "out"
output = ["type=local,dest=build/docs"]
}
target "docs-image" {
inherits = ["_common_docs"]
target = "server"
output = ["type=docker"]
tags = ["registry-docs:local"]
}

View File

@ -0,0 +1,28 @@
# syntax=docker/dockerfile:1
ARG GO_VERSION=1.20.8
ARG ALPINE_VERSION=3.18
FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS base
RUN apk add --no-cache git
FROM base AS hugo
ARG HUGO_VERSION=0.119.0
RUN --mount=type=cache,target=/go/mod/pkg \
go install github.com/gohugoio/hugo@v${HUGO_VERSION}
FROM base AS build-base
COPY --from=hugo $GOPATH/bin/hugo /bin/hugo
WORKDIR /src
FROM build-base AS build
RUN --mount=type=bind,rw,source=docs,target=. \
hugo --gc --minify --destination /out
FROM build-base AS server
COPY docs .
ENTRYPOINT [ "hugo", "server", "--bind", "0.0.0.0" ]
EXPOSE 1313
FROM scratch AS out
COPY --from=build /out /

View File

@ -59,5 +59,5 @@ Now stop your registry and remove all data
## Next
You should now read the [detailed introduction about the registry](introduction.md),
or jump directly to [deployment instructions](deploying.md).
You should now read the [detailed introduction about the registry](./about/_index.md),
or jump directly to [deployment instructions](./about/deploying.md).

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

9
docs/go.mod Normal file
View File

@ -0,0 +1,9 @@
module github.com/distribution/distribution/docs
go 1.21.1
require (
github.com/google/docsy v0.7.1 // indirect
github.com/imfing/hextra v0.5.0 // indirect
github.com/thegeeklab/hugo-geekdoc v0.41.2 // indirect
)

9
docs/go.sum Normal file
View File

@ -0,0 +1,9 @@
github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo=
github.com/google/docsy v0.7.1 h1:DUriA7Nr3lJjNi9Ulev1SfiG1sUYmvyDeU4nTp7uDxY=
github.com/google/docsy v0.7.1/go.mod h1:JCmE+c+izhE0Rvzv3y+AzHhz1KdwlA9Oj5YBMklJcfc=
github.com/google/docsy/dependencies v0.7.1/go.mod h1:gihhs5gmgeO+wuoay4FwOzob+jYJVyQbNaQOh788lD4=
github.com/imfing/hextra v0.5.0 h1:uVUmtqx7UivuA6oCVSKkaM/YGcLuIA9P8j8mmCDg4hU=
github.com/imfing/hextra v0.5.0/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
github.com/thegeeklab/hugo-geekdoc v0.41.2 h1:U6TvFfO3TVoCvirpLFXMO/sE5qHavZ18N22tUtiTwBo=
github.com/thegeeklab/hugo-geekdoc v0.41.2/go.mod h1:XEAtAuJ3nRMshRupMW1xPZ7EVMleS87rmr+RklRamRY=
github.com/twbs/bootstrap v5.2.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=

19
docs/hugo.yaml Normal file
View File

@ -0,0 +1,19 @@
baseURL: https://example.com/
languageCode: en-us
title: CNCF Distribution
theme: hugo-geekdoc
pluralizeListTitles: false
enableRobotsTXT: true
taxonomies: [tags]
minify:
disableHTML: true
# Geekdoc required configuration
pygmentsUseClasses: true
pygmentsCodeFences: true
disablePathToLower: true
params:
geekdocRepo: "https://github.com/distribution/distribution"
geekdocEditPath: edit/main/docs

1
docs/static/brand.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.8 KiB

50
docs/static/custom.css vendored Normal file
View File

@ -0,0 +1,50 @@
/* Global customization */
:root {
--code-max-height: 60rem;
}
/* Light mode theming */
:root,
:root[color-theme="light"] {
--header-background: #203554;
--header-font-color: #ffffff;
--footer-background: #203554;
--footer-font-color: #ffffff;
--footer-link-color: rgb(110, 168, 212);
--footer-link-color-visited: rgb(186, 142, 240);
}
@media (prefers-color-scheme: light) {
:root {
--header-background: #203554;
--header-font-color: #ffffff;
--footer-background: #203554;
--footer-font-color: #ffffff;
--footer-link-color: rgb(110, 168, 212);
--footer-link-color-visited: rgb(186, 142, 240);
}
}
/* Dark mode theming */
:root[color-theme="dark"] {
--header-background: #203554;
--header-font-color: #ffffff;
--footer-background: #203554;
--footer-font-color: #ffffff;
--footer-link-color: rgb(110, 168, 212);
--footer-link-color-visited: rgb(186, 142, 240);
}
@media (prefers-color-scheme: dark) {
:root {
--header-background: #203554;
--header-font-color: #ffffff;
--footer-background: #203554;
--footer-font-color: #ffffff;
--footer-link-color: rgb(110, 168, 212);
--footer-link-color-visited: rgb(186, 142, 240);
}
}

BIN
docs/static/favicon/favicon-16x16.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

BIN
docs/static/favicon/favicon-32x32.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
docs/static/favicon/favicon.svg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,3 @@
https://github.com/thegeeklab/.+/edit/main/.*
https://unsplash.com.*
https://www.color-hex.com.*

21
docs/themes/hugo-geekdoc/LICENSE vendored Normal file
View File

@ -0,0 +1,21 @@
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.

46
docs/themes/hugo-geekdoc/README.md vendored Normal file
View File

@ -0,0 +1,46 @@
# Geekdoc
[![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/hugo-geekdoc/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc)
[![Hugo Version](https://img.shields.io/badge/hugo-0.112-blue.svg)](https://gohugo.io)
[![GitHub release](https://img.shields.io/github/v/release/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)
[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
[![License: MIT](https://img.shields.io/github/license/thegeeklab/hugo-geekdoc)](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 good alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
![Desktop and mobile preview](https://raw.githubusercontent.com/thegeeklab/hugo-geekdoc/main/images/readme.png)
## 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)

1
docs/themes/hugo-geekdoc/VERSION vendored Normal file
View File

@ -0,0 +1 @@
v0.41.2

View File

@ -0,0 +1,7 @@
---
title: "{{ .Name | humanize | title }}"
weight: 1
# geekdocFlatSection: false
# geekdocToc: 6
# geekdocHidden: false
---

View File

@ -0,0 +1,4 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
---

View File

@ -0,0 +1,8 @@
{{- $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 }}
}

View File

@ -0,0 +1,13 @@
[
{{ 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 diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,158 @@
{
"main.js": {
"src": "js/main-924a1933.bundle.min.js",
"integrity": "sha512-0QF6awwW0WbBo491yytmULiHrc9gx94bloJ9MSXIvdJh3YHWw7CWyeX2YXu0rzOQefJp4jW/I6ZjUDYpNVFhdA=="
},
"colortheme.js": {
"src": "js/colortheme-d3e4d351.bundle.min.js",
"integrity": "sha512-HpQogL/VeKqG/v1qYOfJOgFUzBnQvW4yO4tAJO+54IiwbLbB9feROdeaYf7dpO6o5tSHsSZhaYLhtLMRlEgpJQ=="
},
"mermaid.js": {
"src": "js/mermaid-19cc0b12.bundle.min.js",
"integrity": "sha512-EP8Ggw4/AoLCR9N2U4AOherShR6hKWYpKaC0Q/LwKR5wjH8x5Z0v0VL0S5x67X3AWUvR2aMO0IOc0Bo1xu4qmQ=="
},
"katex.js": {
"src": "js/katex-373b7f53.bundle.min.js",
"integrity": "sha512-k7PGb4UsYurOXnDJtwuPOhS6OgcI7PVrCZZT3h79JVH8KEcNzzsmzoAWMOaTeIFP79JnpYtZhaBBwEMNk4MlFw=="
},
"search.js": {
"src": "js/search-9719be99.bundle.min.js",
"integrity": "sha512-/7NZxFUEbalC/8RKDgfAsHFDI42/Ydp33uJmCLckZgnO+kuz9LrTfmPFfVJxPJ31StMxa3MTQ5Jq049CmNK4pw=="
},
"js/637-687440a7.chunk.min.js": {
"src": "js/637-687440a7.chunk.min.js",
"integrity": "sha512-fWyOGUUaxBiYIZoJ2R1FPhLRt/cC9prL1bsVuETWBjT1QpS6ebmmzMaYnKBPOpw56VqdlErWJuWe2GGxYJq3gA=="
},
"js/116-831698f6.chunk.min.js": {
"src": "js/116-831698f6.chunk.min.js",
"integrity": "sha512-ecC9DggU9rDmnERLt6l5lXnDir+fYAXDhA8r+o+LCML/C64QPvq3Uea+oNwN00hXbXa1f5c/tjICeJZyXu9Dqg=="
},
"js/425-a8288851.chunk.min.js": {
"src": "js/425-a8288851.chunk.min.js",
"integrity": "sha512-JcFSthlEXIsUdEtbQlAQp71m1GMurzdmPZN+J2/PTyMGgv/QBN8OX8TZQVouAPMY3rMirjB9gxhyNyxCZ0/IUQ=="
},
"js/869-1a62f06a.chunk.min.js": {
"src": "js/869-1a62f06a.chunk.min.js",
"integrity": "sha512-9GtubjugiKpB6oP+I13znOYnCGzMWkywSjO7PC/cTZ8BfK4amSwC6i+vCKVCnTrhpoUtFtzybF0d+dDsOqpO/g=="
},
"js/626-ec18a767.chunk.min.js": {
"src": "js/626-ec18a767.chunk.min.js",
"integrity": "sha512-plFEM+MV7s8fGxmB4fXdkDYK2URbdL7D0r0eKSsdBW+Z3PvfQOaW7OuoA5oUpGBZyd2wN1zpxTwqHC3WPbluLA=="
},
"js/305-02bced6e.chunk.min.js": {
"src": "js/305-02bced6e.chunk.min.js",
"integrity": "sha512-omqkH+cRXCbA6ax452pYFTBvqT895kBCycglJaYQxoB646IPcz2IHiIIWhWsEU7eVy4cy7eA+dQ4tgWG+JbGOQ=="
},
"js/86-841830e3.chunk.min.js": {
"src": "js/86-841830e3.chunk.min.js",
"integrity": "sha512-j4o/ljne580vctbO1z6GWwVFvaC3m6VpLTnyWIvE9Dd3PURujWHnWReNLclxcnlt5PK9Ohv4W8q3aEOKfUdJkw=="
},
"js/554-980b1ae9.chunk.min.js": {
"src": "js/554-980b1ae9.chunk.min.js",
"integrity": "sha512-9oVYpFOErj3ttWPhB/FvJwhijnezxV2mOKoTAT5+S1QQVAsSACgxnxG1VtjvyuSyCn0HD7l1dS054fP0yxQ9Dg=="
},
"js/693-2124948a.chunk.min.js": {
"src": "js/693-2124948a.chunk.min.js",
"integrity": "sha512-Ko3GXiQtfF28e9Omm4ypj+p+ykT5Uc1s8PxodgWV+N9h68t+QnTLJ3PghxWW3YqCrTyMkqpg+U3hkyFxotqnBA=="
},
"js/875-0cc44212.chunk.min.js": {
"src": "js/875-0cc44212.chunk.min.js",
"integrity": "sha512-600TvjSLQ2arsupduQSwNsOZIdp2xUnLsqUL0n9gVxdkvdFCYANyjORkO/a0knUzzNGv3oZqE9dqtEJSY7hLJw=="
},
"js/69-06c8b62f.chunk.min.js": {
"src": "js/69-06c8b62f.chunk.min.js",
"integrity": "sha512-UDuWdgHzd+HSXjzw8xnjYxxZOw2zJXWrL1Zo7oadh7n6TpxFAGDunn6EDYf2KFmcjVcC4QlqJrdWtoJVcUwr/w=="
},
"js/841-54550e4a.chunk.min.js": {
"src": "js/841-54550e4a.chunk.min.js",
"integrity": "sha512-aI+ntywFR8QzYpRGYsSGxqanSDnuXDuLAJA1Gbt5gFajjUxIBJV8qjgTLA7FIwp2icE4bqGGqxiNVA1iHTOSIA=="
},
"js/770-c8f14079.chunk.min.js": {
"src": "js/770-c8f14079.chunk.min.js",
"integrity": "sha512-DIFMhxj0xWxZzYBrVJbKhdM9pgk6sldGU7ZwItTZOHRRUnZ6t9szP06NTyj+u8yGZsdYNs2pZ8BE11z73IE70w=="
},
"js/411-d351386b.chunk.min.js": {
"src": "js/411-d351386b.chunk.min.js",
"integrity": "sha512-9o8/PabGB1IvJ1gotEkTK1PVxl0Dlx2fgWnOlZW1e9PEKDJJA678o3YMjmxurllubPC0i4XOkvvAvY1UUc5V4A=="
},
"js/31-228682ad.chunk.min.js": {
"src": "js/31-228682ad.chunk.min.js",
"integrity": "sha512-ipfn94AWwvQA5I4ybx5fe+VJSKT27ltpG0srqabFrj0IYIZ3RCFctWNqllDGhCIuVMgbiNHCjinxdA8NpaiPPw=="
},
"js/206-99fce408.chunk.min.js": {
"src": "js/206-99fce408.chunk.min.js",
"integrity": "sha512-sVuoOJUKhvA96dAxr0ZO7x5xmz25WE9Khnp+SB4F5vWL+J+dAvE2SXZ8irLWhS5u32tRjOjCeFZhyXpI47PlGQ=="
},
"js/284-e80fd0b5.chunk.min.js": {
"src": "js/284-e80fd0b5.chunk.min.js",
"integrity": "sha512-dwNdk1Jto6A4Ht/60GMUMarGkFKRTWiqxh+gM3YqjL7b2N/y0xut6op5EESN0gyfQL7xk4pgFowyMyS0rJPcRw=="
},
"js/764-e8ff889e.chunk.min.js": {
"src": "js/764-e8ff889e.chunk.min.js",
"integrity": "sha512-S94wRBs5tuMiknLYIobCoDPvnEquE9hmtjlw2m/yYAJJRaiTlCpl/neWfGoW3Eroz9uWdfrJta5piUSf3ggGVA=="
},
"js/366-23e20231.chunk.min.js": {
"src": "js/366-23e20231.chunk.min.js",
"integrity": "sha512-ZdFzJKlkluOGBZbidVvAFoh/4EK1z5q0kCYzWpXxof3aNUkIEawQhqHwnyEluGqNTZK3WCipT9UifauPLli6Dg=="
},
"js/68-408c048c.chunk.min.js": {
"src": "js/68-408c048c.chunk.min.js",
"integrity": "sha512-2x0FedDuG88J3visHLYeCd7iys7rXnCes0gAZ3ROc5hiKPgbYZBDW4sCUe9MhUC5YpWa3C0gLWqXW+hG2zLZew=="
},
"js/254-84661edf.chunk.min.js": {
"src": "js/254-84661edf.chunk.min.js",
"integrity": "sha512-JPsK+gAw8vXehHfD4LWUaCx3rW7NaPDXxSwnpQURaFKWUVIxDzKr3mFv3r4mfSyY67qIAVOx2b4NvAzhuZs34Q=="
},
"js/791-515d9e3a.chunk.min.js": {
"src": "js/791-515d9e3a.chunk.min.js",
"integrity": "sha512-5AetU1QSQjqq3J5BHmkLLshpfFzrCsprDszxddeMdk9peRN0Q+vu0pCMGzONBm7y/2IrZoSg4soEO0zVcPLc9w=="
},
"js/771-942a62df.chunk.min.js": {
"src": "js/771-942a62df.chunk.min.js",
"integrity": "sha512-8WfA8U1Udlfa6uWAYbdNKJzjlJ91qZ0ZhC+ldKdhghUgilxqA6UmZxHFKGRDQydjOFDk828O28XVmZU2IEvckA=="
},
"js/27-3c59de1a.chunk.min.js": {
"src": "js/27-3c59de1a.chunk.min.js",
"integrity": "sha512-dBBUvtlEcEY4UQSXNBpanCV1oMlEDMH4vHvACVUzG0c2Mbb9RHM8sTNSLnu+RvHvUCInCO3LbbUm3Cp2Re0eVg=="
},
"js/580-fabed2ac.chunk.min.js": {
"src": "js/580-fabed2ac.chunk.min.js",
"integrity": "sha512-L70er+tQ1Sy3yLwOKjGWDlqOtBGykeQO2F3EQzaiMgSb1qBKlrYYK7XnbI5w0qYtvYDvPmE1aflHAlrDMB6Njg=="
},
"js/644-a3e6d7ca.chunk.min.js": {
"src": "js/644-a3e6d7ca.chunk.min.js",
"integrity": "sha512-Qnwma/kO7a1x3UQXPSvKog3gI4S0H1zBy1MaQRDqpBLSEONhSdzr5gVwIqORF0sBPXAA5pPcGzHhkn83rqBviw=="
},
"js/320-1804d5a1.chunk.min.js": {
"src": "js/320-1804d5a1.chunk.min.js",
"integrity": "sha512-Srm5Oc13M8J2BystZLBh0VQqzsZnmuO5pi1/oSlmF8vp7poUUnMrnBf1QfrmsYIbFhYP7waiAm3X0s/IdTsJ6Q=="
},
"js/281-18063325.chunk.min.js": {
"src": "js/281-18063325.chunk.min.js",
"integrity": "sha512-YYPVu/iwpjYksSAqpWi1fqS29eLndA/TgC7dcSWuOe74+MKrBiGKSMbNzwUpTEV44KOKm6qZCnqjPnxReJuq5w=="
},
"js/990-52a18bdc.chunk.min.js": {
"src": "js/990-52a18bdc.chunk.min.js",
"integrity": "sha512-EuVHE1vNrU9XWjPOiLMBKKDTePuW4jYhguSruI3j2/J6mB3LQB8vSe6kKRQuHGRKYmX3gY2sDdAgFtCsCjm4vQ=="
},
"main.scss": {
"src": "main-252d384c.min.css",
"integrity": "sha512-WiV7BVk76Yp0EACJrwdWDk7+WNa+Jyiupi9aCKFrzZyiKkXk7BH+PL2IJcuDQpCMtMBFJEgen2fpKu9ExjjrUQ=="
},
"katex.css": {
"src": "katex-1799419e.min.css",
"integrity": "sha512-8rRve7ln2pKSPM7cASxirv/36DFCvY36b7sI40mS49nwsEPHsagrGiPzz1l24cpIQ9OvwfNAZmhoqjQLIrCTUg=="
},
"mobile.scss": {
"src": "mobile-79ddc617.min.css",
"integrity": "sha512-dzw2wMOouDwhSgstQKLbXD/vIqS48Ttc2IV6DeG7yam9yvKUuChJVaworzL8s2UoGMX4x2jEm50PjFJE4R4QWw=="
},
"print.scss": {
"src": "print-735ccc12.min.css",
"integrity": "sha512-c28KLNtBnKDW1+/bNWFhwuGBLw9octTXA2wnuaS2qlvpNFL0DytCapui9VM4YYkZg6e9TVp5LyuRQc2lTougDw=="
},
"custom.css": {
"src": "custom.css",
"integrity": "sha512-1kALo+zc1L2u1rvyxPIew+ZDPWhnIA1Ei2rib3eHHbskQW+EMxfI9Ayyva4aV+YRrHvH0zFxvPSFIuZ3mfsbRA=="
}
}

53
docs/themes/hugo-geekdoc/i18n/cs.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

53
docs/themes/hugo-geekdoc/i18n/de.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

53
docs/themes/hugo-geekdoc/i18n/en.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

53
docs/themes/hugo-geekdoc/i18n/es.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

53
docs/themes/hugo-geekdoc/i18n/it.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

53
docs/themes/hugo-geekdoc/i18n/ja.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_prefix: "未翻訳のページ:"
propertylist_required: 必須
propertylist_optional: 任意
propertylist_default: 既定値
pagination_page_prev:
pagination_page_next:
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"

53
docs/themes/hugo-geekdoc/i18n/nl.yaml vendored Normal file
View File

@ -0,0 +1,53 @@
---
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_tranlation_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 }}"

View File

@ -0,0 +1,53 @@
---
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_tranlation_prefix: "页面未翻译:"
propertylist_required: 需要
propertylist_optional: 可选
propertylist_default: 默认值
pagination_page_prev: 以前
pagination_page_next: 下一个
pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}"

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

BIN
docs/themes/hugo-geekdoc/images/tn.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

@ -0,0 +1,40 @@
<!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">
<input type="checkbox" class="hidden" id="menu-header-control" />
{{ 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.BaseURL | safeHTML }}
</div>
</div>
</div>
</main>
{{ partial "site-footer" . }}
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
<!-- prettier-ignore-start -->
{{ if not (.Page.Scratch.Get "mermaid") }}
<!-- Include mermaid only first time -->
<script defer src="{{ index (index .Page.Site.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>

View File

@ -0,0 +1,27 @@
{{- $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 -->

View File

@ -0,0 +1,6 @@
<img
src="{{ .Destination | safeURL }}"
alt="{{ .Text }}"
{{ with .Title }}title="{{ . }}"{{ end }}
/>
{{- /* Drop trailing newlines */ -}}

View File

@ -0,0 +1,14 @@
{{- $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 */ -}}

View File

@ -0,0 +1,60 @@
<!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">
{{ partial "svg-icon-symbols" . }}
<div
class="wrapper {{ if default false .Site.Params.geekdocDarkModeDim }}dark-mode-dim{{ end }}"
>
<input type="checkbox" class="hidden" id="menu-control" />
<input type="checkbox" class="hidden" id="menu-header-control" />
{{ $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" . }}
<div class="gdoc-page__footer flex flex-wrap justify-between">
{{ partial "menu-nextprev" . }}
</div>
</div>
</main>
{{ partial "site-footer" . }}
</div>
{{ partial "foot" . }}
</body>
</html>

View File

@ -0,0 +1,11 @@
{{ define "main" }}
{{ partial "page-header" . }}
<article
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.geekdocAlign | lower) }}"
>
<h1>{{ partial "utils/title" . }}</h1>
{{ partial "utils/content" . }}
</article>
{{ end }}

View File

@ -0,0 +1,11 @@
{{ define "main" }}
{{ partial "page-header" . }}
<article
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.geekdocAlign | lower) }}"
>
<h1>{{ partial "utils/title" . }}</h1>
{{ partial "utils/content" . }}
</article>
{{ end }}

View File

@ -0,0 +1,49 @@
{{ define "main" }}
{{ 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 }}
{{ 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 }}

View File

@ -0,0 +1,32 @@
{{ define "main" }}
{{ 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>
{{ $latet := index .Pages.ByDate 0 }}
{{ with $latet }}
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
{{ end }}
</span>
</span>
</footer>
</article>
{{ end }}
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -0,0 +1,6 @@
{{ if default true .Site.Params.geekdocSearch }}
<script defer src="{{ index (index .Site.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 -}}
{{ end }}

View File

@ -0,0 +1 @@
<!-- You can add custom elements to the page header here. -->

View File

@ -0,0 +1,13 @@
<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 }}"
/>

View File

@ -0,0 +1,14 @@
<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 }}

View File

@ -0,0 +1,3 @@
{{ partial "microformats/opengraph.html" . }}
{{ partial "microformats/twitter_cards.html" . }}
{{ partial "microformats/schema" . }}

View File

@ -0,0 +1,73 @@
{{- if default true .Site.Params.geekdocDarkModeToggle }}
<script src="{{ index (index .Site.Data.assets "colortheme.js") "src" | relURL }}"></script>
{{- end }}
<script src="{{ index (index .Site.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 .Site.Data.assets "main.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index .Site.Data.assets "main.scss") "src" | relURL }}"
media="all"
/>
<link
rel="preload"
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
media="screen and (max-width: 45rem)"
/>
<link
rel="preload"
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
media="print"
/>
<link
rel="preload"
href="{{ index (index .Site.Data.assets "custom.css") "src" | relURL }}"
as="style"
/>
<link
rel="stylesheet"
href="{{ index (index .Site.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.BaseURL }}" />
{{- end }}
{{ printf "<!-- %s -->" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}

View File

@ -0,0 +1 @@
<!-- place to set your rel-me links https://microformats.org/wiki/rel-me -->

View File

@ -0,0 +1,51 @@
{{ if .Site.IsMultiLingual }}
<span class="gdoc-language">
<ul class="gdoc-language__selector" role="button" aria-pressed="false" tabindex="0">
<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_tranlation_prefix" }} {{ .LanguageName }}"
href="{{ .Lang | relLangURL }}"
hreflang="{{ .Lang }}"
lang="{{ .Lang }}"
>
{{ .LanguageName }}*
</a>
</li>
{{ end -}}
{{ end -}}
{{ end }}
</ul>
</li>
</ul>
</span>
{{ end }}

View File

@ -0,0 +1,87 @@
{{ $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 }}"
>
{{ $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 hidden">
<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 }}

View File

@ -0,0 +1,46 @@
{{ $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"
>
<svg class="gdoc-icon {{ .icon }}">
<title>{{ $name }}</title>
<use xlink:href="#{{ .icon }}"></use>
</svg>
</a>
</span>
{{ end }}
{{ end }}
{{ end }}
{{ end }}

View File

@ -0,0 +1,98 @@
{{ $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 }}

View File

@ -0,0 +1,78 @@
{{ $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_nextprev" dict "sect" $.Site.Data.menu.main.main "current" $current "site" $site }}
{{ define "menu_nextprev" }}
{{ $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_nextprev" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
{{ end }}
{{ end }}
{{ end }}
{{ $showPrevNext := (and (default true .Site.Params.geekdocNextPrev) .Site.Params.geekdocMenuBundle) }}
{{ if $showPrevNext }}
<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>
{{ end }}

View File

@ -0,0 +1,44 @@
<nav>
{{ partial "search" . }}
<section class="gdoc-nav--main">
<h2>{{ i18n "nav_navigation" }}</h2>
{{ if .Site.Params.geekdocMenuBundle }}
{{ partial "menu-bundle" (dict "current" . "source" .Site.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 .Site.Data.menu.more.more }}
<h2>{{ i18n "nav_more" }}</h2>
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.more.more) }}
{{ end }}
</section>
</nav>

View File

@ -0,0 +1,68 @@
{{ $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.Social.facebook_admin }}
<meta property="fb:admins" content="{{ . }}" />
{{- end }}

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