Compare commits

..

1 commit

Author SHA1 Message Date
n
e6533299e5 Add Gitea icons shortcode 2021-05-16 20:10:34 +09:00
191 changed files with 8716 additions and 9020 deletions

View file

@ -1,142 +0,0 @@
{
"version": "0.2",
"language": "en",
"dictionaries": [
// language
"en_us",
// code
"go",
"node",
// package names
"npm"
],
"words": [
"codeberg",
"editview",
"forgejo",
"gitea",
"keycloak",
"knut",
"nord",
"orga",
"pageview",
"styleguide",
"tydata",
"webauthn",
"weblate",
"webp",
"xclip",
"endfor",
"pagefind",
"mray",
"keypair",
"gpgsign",
"signinkey",
"srcset",
"endadmonition",
"TOTP",
"Setext",
"Marlroy",
"preformatting",
"endfor",
"Goldmark",
"Homeserver",
"subpage",
"PKCE",
"block",
"keyid",
"pubring",
"signingkey",
"Browsersync",
"endraw",
"callouts",
"libwebp",
"cwebp",
"Kesi",
"IBAN",
"SEPA",
"fileorpathname",
"oneline",
"eins",
"zwei",
"Commitvia",
"knuts",
"Hostable",
"disroot",
"hostable",
"LICENCE",
"browsable",
"homebrewed",
"libera",
"jumpstart",
"Figshare",
"Zenodo",
"gettext",
"colormix",
"frida",
"reponame",
"yourdomain",
"myproject",
"branchname",
"venv",
"mydocs",
"Hassani",
"Alami",
"Fayçal",
"toctree",
"Malroy",
"Wrzx",
"pacman",
"xbps",
"GENODEF",
"netcup",
"YOURCODEBERGUSERNAME",
"respository",
"mynewfile",
"docstrings",
"autodoc",
"quickstart",
"virtualenv",
"dind",
"Packagist",
"Feishu",
"Gogs",
"noreferrer",
"tabindex",
"CERTDIR",
"nbsp",
"lycheeverse",
"mstruebing",
"davidanson",
"pipelinecomponents",
"corepack"
],
"ignorePaths": [
"**/node_modules/**/*",
"*.webp",
"*.png",
".git/**/*",
".gitignore",
"pnpm-lock.yaml",
"package.json",
"*.svg",
"*.css",
"*.js",
"*.njk",
".cspell.json"
],
// Exclude imports, because they are also strings.
"ignoreRegExpList": [
// ignore mulltiline imports
"import\\s*\\((.|[\r\n])*?\\)",
// ignore single line imports
"import\\s*.*\".*?\"",
// ignore go generate directive
"//\\s*go:generate.*",
// ignore nolint directive
"//\\s*nolint:.*",
// ignore docker image names
"\\s*docker\\.io/.*"
],
"enableFiletypes": ["dockercompose"]
}

3
.ecrc
View file

@ -1,3 +0,0 @@
{
"Exclude": ["LICENSE", ".git*"]
}

View file

@ -1,17 +0,0 @@
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
indent_size = 1
[Makefile]
indent_style = tab

View file

@ -1,85 +1,27 @@
const navigationPlugin = require('@11ty/eleventy-navigation');
const syntaxHighlightingPlugin = require('@11ty/eleventy-plugin-syntaxhighlight');
const markdownIt = require('markdown-it');
const tableOfContentsPlugin = require('@uncenter/eleventy-plugin-toc');
const markdownItClass = require('@toycode/markdown-it-class');
const markdownItAnchor = require('markdown-it-anchor');
const library = require('@fortawesome/fontawesome-svg-core').library;
const icon = require('@fortawesome/fontawesome-svg-core').icon;
const fas = require('@fortawesome/free-solid-svg-icons').fas;
const { execSync } = require('child_process');
const navigationPlugin = require("@11ty/eleventy-navigation")
const syntaxHighlightingPlugin = require("@11ty/eleventy-plugin-syntaxhighlight")
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(navigationPlugin);
eleventyConfig.addPlugin(syntaxHighlightingPlugin);
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(navigationPlugin)
eleventyConfig.addPlugin(syntaxHighlightingPlugin)
eleventyConfig.addPassthroughCopy('assets');
eleventyConfig.addPassthroughCopy('fonts');
eleventyConfig.addPassthroughCopy("assets")
eleventyConfig.addPassthroughCopy("fonts")
// Font Awesome Icons
library.add(fas);
eleventyConfig.addShortcode('fas_icon', function (args) {
var fas_svg = icon({ prefix: 'fas', iconName: args });
return `${fas_svg.html}`;
});
const mapping = {
h2: 'content-title',
h3: 'content-title',
h4: 'content-title',
h5: 'content-title',
h6: 'content-title',
table: 'table',
blockquote: 'alert',
};
const mdOptions = { linkify: false, html: true };
const mdAnchorOpts = {
permalink: markdownItAnchor.permalink.headerLink(),
permalinkClass: 'ml-5',
permalinkSymbol: '#',
level: [1, 2, 3, 4],
};
eleventyConfig.setLibrary(
'md',
markdownIt(mdOptions).use(markdownItClass, mapping).use(markdownItAnchor, mdAnchorOpts),
);
eleventyConfig.addPairedShortcode('admonition', function (content, type, title) {
let titleStr = '';
if (title) {
titleStr = title;
} else if (type) {
titleStr = type.substring(0, 1).toUpperCase() + type.substring(1).toLowerCase();
} else {
titleStr = 'Info';
}
return `<div class="admonition${type ? ` ${type.toLowerCase()}` : ''}">
<div class="admonition-title">
<span class="admonition-icon${type ? ` ${type.toLowerCase()}` : ''}"></span>
${titleStr}
</div>
<div class="admonition-content">${content}</div>
</div>`;
});
eleventyConfig.addPlugin(tableOfContentsPlugin, {
tags: ['h2', 'h3'],
wrapper: function (toc) {
toc = toc.replaceAll('<a', "<a class='sidebar-link'");
return `${toc}`;
},
});
eleventyConfig.on('eleventy.after', () => {
execSync(`npx pagefind`, { encoding: 'utf-8' });
});
eleventyConfig.addShortcode("fas_icon", function(name) { return `<span class="fas fa-${name}"></span>` })
// List of icons: https://codeberg.org/Codeberg/gitea/src/branch/codeberg/public/img/svg
eleventyConfig.addShortcode("gitea_icon", function(name) {
const fetch = require('node-fetch');
fetch(`https://codeberg.org/img/svg/${name}.svg`)
.then(res => res.text())
.then(body => {return svg = body;});
return svg
})
return {
dir: {
input: 'content',
},
};
};
input: "content"
}
}
}

1
.gitignore vendored
View file

@ -1,4 +1,3 @@
node_modules/
_site/
pages.git/
.idea/

View file

@ -1,8 +0,0 @@
http://127.0.0.1:**
https://pages.codeberg.org/user.name/
https://user.name.codeberg.page/
https://repo.sitory.username.codeberg.page/
file://** */
https://codeberg.org/username/repo.git
https://username.codeberg.page/**
https://openclipart.org/**

View file

@ -1,141 +0,0 @@
# markdownlint YAML configuration
# https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml
# Default state for all rules
default: true
# Path to configuration file to extend
extends: null
# MD003/heading-style/header-style - Heading style
MD003:
# Heading style
style: 'atx'
# MD004/ul-style - Unordered list style
MD004:
style: 'dash'
# MD007/ul-indent - Unordered list indentation
MD007:
# Spaces for indent
indent: 2
# Whether to indent the first level of the list
start_indented: false
# MD009/no-trailing-spaces - Trailing spaces
MD009:
# Spaces for line break
br_spaces: 2
# Allow spaces for empty lines in list items
list_item_empty_lines: false
# Include unnecessary breaks
strict: false
# MD010/no-hard-tabs - Hard tabs
MD010:
# Include code blocks
code_blocks: true
# MD012/no-multiple-blanks - Multiple consecutive blank lines
MD012:
# Consecutive blank lines
maximum: 1
# MD013/line-length - Line length
MD013:
# Number of characters
line_length: 500
# Number of characters for headings
heading_line_length: 100
# Number of characters for code blocks
code_block_line_length: 80
# Include code blocks
code_blocks: false
# Include tables
tables: false
# Include headings
headings: true
# Include headings
headers: true
# Strict length checking
strict: false
# Stern length checking
stern: false
# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
MD022:
# Blank lines above heading
lines_above: 1
# Blank lines below heading
lines_below: 1
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
# Only check sibling headings
allow_different_nesting: true
# MD025/single-title/single-h1 - Multiple top-level headings in the same document
MD025:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD026/no-trailing-punctuation - Trailing punctuation in heading
MD026:
# Punctuation characters
punctuation: '.,;:!。,;:!'
# MD029/ol-prefix - Ordered list item prefix
MD029:
# List style
style: 'one_or_ordered'
# MD030/list-marker-space - Spaces after list markers
MD030:
# Spaces for single-line unordered list items
ul_single: 1
# Spaces for single-line ordered list items
ol_single: 1
# Spaces for multi-line unordered list items
ul_multi: 1
# Spaces for multi-line ordered list items
ol_multi: 1
# MD033/no-inline-html - Inline HTML
MD033: false
# MD035/hr-style - Horizontal rule style
MD035:
# Horizontal rule style
style: '---'
# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
MD036:
# Punctuation characters
punctuation: '.,;:!?。,;:!?'
# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
MD041:
# Heading level
level: 1
# RegExp for matching title in front matter
front_matter_title: "^\\s*title\\s*[:=]"
# MD044/proper-names - Proper names should have the correct capitalization
MD044:
# List of proper names
# names:
# Include code blocks
code_blocks: false
# MD046/code-block-style - Code block style
MD046:
# Block style
style: 'fenced'
# MD048/code-fence-style - Code fence style
MD048:
# Code fence style
style: 'backtick'

View file

@ -1 +0,0 @@
pnpm-lock.yaml

View file

@ -1,8 +0,0 @@
{
"semi": true,
"trailingComma": "all",
"singleQuote": true,
"printWidth": 120,
"tabWidth": 2,
"endOfLine": "lf"
}

View file

@ -1,14 +0,0 @@
when:
- event: [pull_request]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
build:
image: codeberg.org/woodpecker-plugins/node-pm:1.3.0
settings:
run: build
with: pnpm
frozen_lockfile: true
ignore_node_modules: true

View file

@ -1,29 +0,0 @@
when:
- event: [pull_request, pull_request_closed]
steps:
build:
image: codeberg.org/woodpecker-plugins/node-pm
settings:
run: build
with: pnpm
frozen_lockfile: true
ignore_node_modules: true
deploy-preview:
image: docker.io/woodpeckerci/plugin-surge-preview:1.3.1
settings:
path: '_site/'
forge_type: gitea
forge_url: https://codeberg.org
surge_token:
from_secret: surge_token
forge_repo_token:
from_secret: surge_forge_token
failure: ignore
when:
event: [pull_request, pull_request_closed]
path:
- content/**
- assets/**
- .eleventy.js

View file

@ -1,44 +0,0 @@
when:
- event: [pull_request]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
lint-markdown:
image: davidanson/markdownlint-cli2:v0.13.0
commands:
- 'markdownlint-cli2 *.{md,markdown}'
when:
path: '*.{md,markdown}'
editor-config:
image: mstruebing/editorconfig-checker:v3.0.1
depends_on: []
prettier:
image: docker.io/woodpeckerci/plugin-prettier:0.1.0
depends_on: []
settings:
version: 3.2.5
links:
image: lycheeverse/lychee:0.14.3
depends_on: []
commands:
- lychee -v -t 40 .
lint-yaml:
image: pipelinecomponents/yamllint:0.31.2
depends_on: []
commands:
- yamllint --strict .
when:
path: '*.{yml,yaml}'
spellcheck:
image: docker.io/node:22-alpine
depends_on: []
commands:
- corepack enable
- pnpx cspell lint --no-progress --gitignore '{**,.*}/{*,.*}'

View file

@ -1,21 +0,0 @@
ignore: |
pnpm-lock.yaml
node_modules/
rules:
comments:
require-starting-space: false
ignore-shebangs: true
min-spaces-from-content: 1
braces:
min-spaces-inside: 1
max-spaces-inside: 1
document-start:
present: false
indentation:
spaces: 2
indent-sequences: true
line-length:
max: 256
new-lines:
type: unix

13
CONTRIBUTORS.md Normal file
View file

@ -0,0 +1,13 @@
# The Codeberg Documentation Contributors
In alphabetic order (by last name / username):
- Martijn de Boer (@sexybiggetje)
- Christian Buhtz (@buhtz)
- Ivan Calandra (@ivan-paleo)
- Ben Cotterell (@benc)
- Lucas Hinderberger (@lhinderberger)
- Henning Jacobs (@hjacobs)
- @mray (for the Codeberg Logo)
- @n
- Holger Waechtler (@hw)

View file

@ -1,16 +0,0 @@
FROM node:12.22.12-stretch-slim
RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y git curl
RUN curl -fsSL https://get.pnpm.io/install.sh | sh -
RUN mkdir /opt/documentation && chown node: /opt/documentation
USER node
WORKDIR /opt/documentation
RUN pnpm install
CMD [ "pnpm", "run", "serve"]

View file

@ -1,19 +1,13 @@
<!-- markdownlint-disable MD041 -->
This website is licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en).
This website by [The Codeberg Documentation Contributors](CONTRIBUTORS.md)
is licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en).
Due to the wiki-like nature of this website, pages usually have multiple authors and are changed
frequently. Changes to the original versions of the works as well as their individual authors can be
looked up in [the website's commit history](https://codeberg.org/Codeberg/Documentation/commits/branch/main).
looked up in [the website's commit history](https://codeberg.org/Codeberg/Documentation/commits/branch/master).
The Codeberg logos in this website are by @mray,
licensed under [CC0 1.0](http://creativecommons.org/publicdomain/zero/1.0/).
The fonts in this website are documented on the [Codeberg Design repo](https://codeberg.org/Codeberg/Design#font-inter).
The icons in this website are by [Font Awesome](https://github.com/FortAwesome/Font-Awesome),
licensed under [multiple licenses](https://fontawesome.com/license/free).
The Codeberg logos in this website are by mray,
licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.en).
Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.
"Knut the Polar Bear" has been derived from [https://openclipart.org/detail/193243/polar-bear-remix](https://openclipart.org/detail/193243/polar-bear-remix), under CC0 1.0
"Knut the Polar Bear" has been derived from https://openclipart.org/detail/193243/polar-bear-remix, under CC0 1.0

View file

@ -1,30 +1,28 @@
# Codeberg Documentation
This repository contains the [documentation for Codeberg](https://docs.codeberg.org/), with some code to build it into
This repository contains the documentation for Codeberg, with some code to build it into
a static website.
Please have a look into it and consider to help writing the Documentation. This is still very much work-in-progress, the more useful material we collect, the better we can later present it! All contributions are very welcome!
For an introduction on contributing to Codeberg Documentation, please have a look
at [the section on improving the documentation](https://docs.codeberg.org/improving-documentation/).
at [the Contributor FAQ](https://docs.codeberg.org/improving-codeberg/docs-contributor-faq)
## Usage
### Local Development
If you want to work on the documentation, for example by writing your own articles,
the easiest way to do so is to fork the documentation repository and develop locally.
First, run
`pnpm install`
```npm install```
to install all dependencies (they will be installed only for this project, not globally).
You only have to do this once.
Then run
`pnpm run serve`
```npm run serve```
to start a development web server that by default is listening at `http://localhost:8080`.
@ -34,72 +32,30 @@ should automatically reload all changed pages using the amazing Browsersync.
When you're done, commit your changes to your fork and write a pull request for
Codeberg/Documentation. We're happy about every contribution!
### Local development using the Dockerfile
If you do not have nodejs installed or do not want to run the development web server directly on your host,
you can also use a docker container.
You must have a container-engine installed (docker, podman, etc.)
First build the container image:
```shell
docker build -t Codeberg/Documentation-server .
```
You do not have to rebuild the image every time. Once you build the image you can always start the development
webserver using the container engine:
```shell
docker run --rm -v $PWD:/opt/documentation Codeberg/Documentation-server:latest
```
Use the "External" URL the container outputs on startup to access your documentation.
Changes to files in the documentation are reflected in the browser as the server regularly updates the generated files.
Use `Ctrl-C` to exit / end the container.
The parameters are:
`--rm` removes the container after it's use
`-v` mounts the current (documentation repository root) folder to `/opt/documentation` in the container.
`Codeberg/Documentation-server:latest` refers to the container image built in the first step (using `docker build`).
### Build & Deployment
Like for local development, before building and deploying you first have to install
the dependencies (once):
`pnpm install`
```npm install```
To build the entire website to the `_site` directory run
`pnpm run build`
```npm run build```
Instead, to directly publish the page to Codeberg pages, you can also run
`pnpm run deploy`
```npm run deploy```
which includes a call to `pnpm run build`.
which includes a call to `npm run build`.
### Technical Information
This website uses [Eleventy](https://www.11ty.dev/), a static site generator.
It's supplied as a dev-dependency in `package.json` and its dependencies are locked
with `package-lock.json` to try to ensure reproducible builds.
It also uses [PageFind](https://pagefind.app/), a static search library.
Deployment previews are generated for every PR using [Surge.sh](https://surge.sh/) through the corresponding [Woodpecker plugin](https://woodpecker-ci.org/plugins/Surge%20preview%20plugin).
A spellchecker is used to check for spelling errors in the documentation.
To add exceptions to the spellchecker, add them to the `.cspell.json` file.
## License and Contributors
This website (excluding bundled fonts) is licensed under CC BY-SA 4.0. See the [LICENSE](LICENSE.md) file for details.
Please refer to the [commit log](https://codeberg.org/Codeberg/Documentation/commits/branch/main) for an exhaustive list of contributors to Codeberg Documentation.
The contributors are listed in `CONTRIBUTORS.md`.

View file

@ -1,269 +1,151 @@
:root {
--admonition-background-color--info: rgba(68, 138, 255, 0.2);
--admonition-background-color--note: rgba(0, 184, 212, 0.2);
--admonition-background-color--warning: rgba(255, 145, 0, 0.2);
--admonition-background-color--tip: rgba(0, 191, 165, 0.2);
--admonition-background-color--question: rgba(100, 221, 23, 0.2);
html, body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: white; color: black; }
body { display: flex; flex-direction: column; font-family: "Inter", sans-serif; font-size: 13pt; font-weight: 300; }
:link { color: #0000EE; }
:visited { color: #551A8B; }
:link:active, :visited:active { color: #FF0000; }
--admonition-border-color--info: rgb(68, 138, 255);
--admonition-border-color--note: rgb(0, 184, 212);
--admonition-border-color--warning: rgb(255, 145, 0);
--admonition-border-color--tip: rgb(0, 191, 165);
--admonition-border-color--question: rgb(100, 221, 23);
header { height: 60px; margin-top: 30px; margin-bottom: 60px; }
header > .container { display: flex; align-items: center; }
#header-action-buttons { text-align: right; }
#header-logo { height: 100%; padding: 10px; padding-left: 0; box-sizing: border-box; }
#header-logo img { height: 100%; }
#header-logo-container { display: flex; align-items: center; height: 100%; }
#header-logo a { text-decoration: none; }
#logo-heading { color: #2185d0; font-weight: 700; font-size: 28pt; margin-left: 10px; }
#contents-button { display: none; }
--admonition-icon--info: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 7.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-3 3.75a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 .75.75v4.25h.75a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5h.75V12h-.75a.75.75 0 0 1-.75-.75Z"></path><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Z"></path></svg>');
--admonition-icon--note: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17.263 2.177a1.75 1.75 0 0 1 2.474 0l2.586 2.586a1.75 1.75 0 0 1 0 2.474L19.53 10.03l-.012.013L8.69 20.378a1.753 1.753 0 0 1-.699.409l-5.523 1.68a.748.748 0 0 1-.747-.188.748.748 0 0 1-.188-.747l1.673-5.5a1.75 1.75 0 0 1 .466-.756L14.476 4.963ZM4.708 16.361a.26.26 0 0 0-.067.108l-1.264 4.154 4.177-1.271a.253.253 0 0 0 .1-.059l10.273-9.806-2.94-2.939-10.279 9.813ZM19 8.44l2.263-2.262a.25.25 0 0 0 0-.354l-2.586-2.586a.25.25 0 0 0-.354 0L16.061 5.5Z"></path></svg>');
--admonition-icon--warning: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 17.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm-.25-8.25a.75.75 0 0 0-1.5 0v4.5a.75.75 0 0 0 1.5 0v-4.5Z"></path><path d="M9.836 3.244c.963-1.665 3.365-1.665 4.328 0l8.967 15.504c.963 1.667-.24 3.752-2.165 3.752H3.034c-1.926 0-3.128-2.085-2.165-3.752Zm3.03.751a1.002 1.002 0 0 0-1.732 0L2.168 19.499A1.002 1.002 0 0 0 3.034 21h17.932a1.002 1.002 0 0 0 .866-1.5L12.866 3.994Z"></path></svg>');
--admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12.596 2.043c1.075.076 2.059.281 2.743.956.698.688.92 1.696.92 2.941 0 .432-.057.955-.117 1.438-.026.2-.051.392-.076.572l-.056.429h2.05c.752 0 1.446.108 2.036.404.612.306 1.062.787 1.355 1.431.551 1.214.542 3.008.223 5.394l-.051.39c-.134 1.01-.248 1.872-.396 2.58-.166.795-.394 1.496-.816 2.05-.89 1.168-2.395 1.372-4.583 1.372-2.331 0-4.08-.418-5.544-.824l-.602-.17c-1.023-.29-1.852-.526-2.69-.586A1.75 1.75 0 0 1 5.25 22h-1.5A1.75 1.75 0 0 1 2 20.25V9.75C2 8.784 2.784 8 3.75 8h1.5a1.75 1.75 0 0 1 1.746 1.633 1.85 1.85 0 0 0 .523-.131c.961-.415 2.774-1.534 2.774-4.2V4.249c0-1.22 1.002-2.298 2.303-2.206ZM7 18.918c1.059.064 2.079.355 3.118.652l.568.16c1.406.39 3.006.77 5.142.77 2.277 0 3.004-.274 3.39-.781.216-.283.388-.718.54-1.448.136-.65.242-1.45.379-2.477l.05-.384c.32-2.4.253-3.795-.102-4.575-.16-.352-.375-.568-.66-.711-.305-.153-.74-.245-1.365-.245h-2.37c-.681 0-1.293-.57-1.211-1.328.026-.243.065-.537.105-.834l.07-.527c.06-.482.105-.921.105-1.25 0-1.125-.213-1.617-.473-1.873-.275-.27-.774-.455-1.795-.528-.351-.024-.698.274-.698.71v1.053c0 3.55-2.488 5.063-3.68 5.577-.372.16-.754.232-1.113.26ZM3.75 20.5h1.5a.25.25 0 0 0 .25-.25V9.75a.25.25 0 0 0-.25-.25h-1.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25Z"></path></svg>');
--admonition-icon--question: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M10.97 8.265a1.45 1.45 0 0 0-.487.57.75.75 0 0 1-1.341-.67c.2-.402.513-.826.997-1.148C10.627 6.69 11.244 6.5 12 6.5c.658 0 1.369.195 1.934.619a2.45 2.45 0 0 1 1.004 2.006c0 1.033-.513 1.72-1.027 2.215-.19.183-.399.358-.579.508l-.147.123a4.329 4.329 0 0 0-.435.409v1.37a.75.75 0 1 1-1.5 0v-1.473c0-.237.067-.504.247-.736.22-.28.486-.517.718-.714l.183-.153.001-.001c.172-.143.324-.27.47-.412.368-.355.569-.676.569-1.136a.953.953 0 0 0-.404-.806C12.766 8.118 12.384 8 12 8c-.494 0-.814.121-1.03.265ZM13 17a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Z"></path></svg>');
main { flex: 1; }
main > .container { display: flex; }
--admonition-icon-dimension: 20px;
#sidebar { display: flex; flex-direction: column; padding: 50px 10px; background: #2185d0; color: white; font-weight: 500; box-sizing: border-box; }
#sidebar nav { width: 350px; box-sizing: border-box; flex: 1; }
#sidebar nav .fas { width: 30px; text-align: center; }
#sidebar nav a { text-decoration: none; color: white; }
#sidebar nav ul { list-style-type: none; padding: 0; margin: 0; }
#sidebar .nav-section a { display: block; padding: 7px 10px; margin: 0 -10px 5px; background: #4595d3; font-size: 12pt; }
#sidebar .nav-section:hover a, #sidebar .nav-section.active a { background: #27628f; margin-left: -15px; padding-left: 15px; padding-right: 15px; margin-right: -15px; }
#sidebar .nav-second-level a { font-size: 11pt; }
#sidebar .nav-second-level ul { margin-left: 15px; padding: 7px 0; }
#sidebar .nav-second-level li { margin-bottom: 10px; }
#sidebar .nav-second-level a:hover, #sidebar .nav-second-level a.active { text-decoration: underline; }
#sidebar .sidebar-close-button { display: none; position: relative; text-align: right; top: -35px; }
#sidebar .sidebar-close-button a:hover { color: red; }
#sidebar .section-collapse-button { margin-left: 0 !important; padding-left: 5px !important; }
#sidebar .section-collapse-button:hover { color: #cfffff; }
#sidebar .section-link { margin-right: 0 !important; padding-right: 5px !important; }
#sidebar-overlay { display: none; opacity: 0; position: fixed; width: 100%; height: 100%; z-index: 999; background: #000a; }
.sidebar-overlay-in { opacity: 1; }
article { padding: 50px 0; width: 800px; }
article :first-child { margin-top: 0; }
article h1 { font-size: 34pt; }
article h2 { font-size: 26pt; }
article h3 { font-size: 20pt; }
article h4 { font-size: 16pt; }
article h5 { font-size: 14pt; }
article h6 { font-size: 12pt; }
article blockquote, article img, article pre { box-sizing: border-box; }
article blockquote, article pre { background: #eee; padding: 30px; margin: 0; border-left: 5px solid #2185d0; overflow: auto; }
article blockquote p:last-of-type { margin-bottom: 0; }
article blockquote blockquote { background: #ddd; }
article code { background: #eee; border-radius: 5px; padding: 1px 3px; }
article pre code { background: none; border-radius: none; padding: 0; }
article img { border: 5px solid #eee; max-width: 100%; }
article p { hyphens: auto; max-width: 100%; }
article table { border-collapse: collapse; }
article td, th { padding: 15px; }
article th { background: #ddd; }
article tr:nth-of-type(even) { background: #eee; }
article hr { width: 80%; border: 1px solid #eee; }
.contribution-invitation hr { margin-top: 70px; margin-bottom: 30px; }
footer { background: #f5f5f5; text-align: center; font-size: 8pt; padding: 15px; margin-top: 60px; }
#mobile-action-buttons { text-align: center; display: none; }
#mobile-contents-button { display: none; }
#mobile-contents-button a { color: #2185D0; font-size: 35px; }
.action-buttons { flex: 1; }
.action-buttons a { text-decoration: none; color: black; margin-left: 10px; }
.action-buttons a:hover { text-decoration: underline; }
.collapsible { overflow-y: hidden; transition: max-height 500ms; }
.container { max-width: 1300px; margin: auto; height: 100%; }
.flex-spacer { flex: 99; }
.narrow-only { display: none; }
@media screen and (max-width: 1400px) {
.wide-only { display: none; }
.narrow-only { display: initial; }
#header-logo { margin-left: 0; }
#sidebar { display: block; position: fixed; overflow-y: auto; left: 0; top: 0; height: 100%; transform: translateX(-400px); z-index: 9999; }
#sidebar .sidebar-close-button { display: block; }
#sidebar nav { width: 300px; }
#sidebar .nav-section a { font-size: 11pt; }
#sidebar-overlay.sidebar-overlay-in { display: block; }
article { margin-left: 0; margin-right: 0; padding-top: 0; width: 100%; }
.container { max-width: 780px; padding: 0 50px; }
#contents-button { display: inline-block; background: #eee; border-radius: 5px; padding: 5px; width: 20px; height: 20px; text-align: center; }
#contents-button:hover { background: #ccc; }
}
.content :not(img, pre) {
max-width: 80ch;
}
.content img {
border: 5px solid rgba(0, 0, 0, 0.2);
max-width: 100%;
}
.content blockquote {
margin: 0;
}
.content-title {
margin-top: 20px !important;
@media screen and (max-width: 750px) {
#header-action-buttons { display: none; }
#mobile-action-buttons { display: block; }
#mobile-contents-button { display: block; }
.container { padding: 0 20px; }
article p { text-align: left; }
header { margin-top: 15px; margin-bottom: 30px; height: 50px; }
#header-logo { flex: 1; }
#logo-heading { font-size: 22pt; }
#mobile-contents-button a { font-size: 30px; }
article h1 { font-size: 28pt; }
article h2 { font-size: 22pt; }
article h3 { font-size: 18pt; }
}
.content pre {
border-left: 5px solid #2185d0;
}
.dark-mode .content pre {
border-left: 5px solid #355379;
@keyframes slideSidebar {
from { transform: translateX(-300px); }
to { transform: translateX(0); }
}
.content ol {
list-style: decimal outside;
}
.content ul {
list-style: outside;
}
.content ol,
.content ul {
margin-top: 10px;
padding-left: 2em;
@keyframes fadeOverlay {
from { opacity: 0; }
to { opacity: 1; }
}
.codeberg-design .card,
.codeberg-design hr {
margin-left: 0;
}
a.header-anchor,
a.header-anchor:visited {
color: var(--lm-base-text-color) !important;
text-decoration: none;
}
.dark-mode a.header-anchor,
.dark-mode a.header-anchor:visited {
color: var(--dm-base-text-color) !important;
text-decoration: none;
}
a.header-anchor:hover {
text-decoration: underline;
}
code span .content {
margin: 0 !important;
}
/* Apply code style to generic code */
pre:not([class*='language-']) {
background: #2e3440;
color: #f8f8f2;
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}
/* Override sidebar link style */
.codeberg-design .sidebar-title a {
color: var(--sidebar-title-text-color);
}
.codeberg-design .sidebar-title .dark-mode a {
color: var(--dm-sidebar-title-text-color);
}
/* Apply halfmoon style to inline code */
code:not(pre > code) {
font-size: var(--code-font-size);
line-height: var(--code-line-height);
padding: var(--code-padding);
margin: var(--code-margin);
color: var(--lm-code-text-color);
background-color: var(--lm-code-bg-color);
border: var(--code-border-width) var(--lm-code-border-color);
border-radius: var(--code-border-radius);
}
.dark-mode code:not(pre > code) {
color: var(--dm-code-text-color);
background-color: var(--dm-code-bg-color);
border-color: var(--dm-code-border-color);
}
/* Custom Admonition boxes */
.admonition {
background-color: var(--admonition-background-color--info);
border: 0.2rem solid var(--admonition-border-color--info);
border-radius: 0.3rem;
border-left-width: 0.5rem;
padding: 1em 1.5em;
}
.admonition-title {
font-weight: bold;
font-size: 1.2em;
}
.admonition-icon::before {
content: '';
background-color: var(--admonition-border-color--info);
mask-position: center;
mask-repeat: no-repeat;
mask-size: contain;
mask-image: var(--admonition-icon--info);
-webkit-mask-position: center;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: contain;
-webkit-mask-image: var(--admonition-icon--info);
display: inline-block;
margin-right: 0.4em;
vertical-align: bottom;
height: 1.5em;
width: 1.5em;
}
.admonition.note {
background-color: var(--admonition-background-color--note);
border-color: var(--admonition-border-color--note);
}
.admonition-icon.note::before {
background-color: var(--admonition-border-color--note);
mask-image: var(--admonition-icon--note);
-webkit-mask-image: var(--admonition-icon--note);
}
.admonition.warning {
background-color: var(--admonition-background-color--warning);
border-color: var(--admonition-border-color--warning);
}
.admonition-icon.warning::before {
background-color: var(--admonition-border-color--warning);
mask-image: var(--admonition-icon--warning);
-webkit-mask-image: var(--admonition-icon--warning);
}
.admonition.tip {
background-color: var(--admonition-background-color--tip);
border-color: var(--admonition-border-color--tip);
}
.admonition-icon.tip::before {
background-color: var(--admonition-border-color--tip);
mask-image: var(--admonition-icon--tip);
-webkit-mask-image: var(--admonition-icon--tip);
}
.admonition.question {
background-color: var(--admonition-background-color--question);
border-color: var(--admonition-border-color--question);
}
.admonition-icon.question::before {
background-color: var(--admonition-border-color--question);
mask-image: var(--admonition-icon--question);
-webkit-mask-image: var(--admonition-icon--question);
}
.admonition-content > *:last-child {
margin-bottom: 0;
}
#search-results {
overflow: hidden;
word-wrap: anywhere;
white-space: break-spaces;
--pagefind-ui-background: var(--dm-sidebar-bg-color);
--pagefind-ui-primary: var(--dm-sidebar-link-text-color);
--pagefind-ui-border: var(--dm-sidebar-divider-bg-color);
}
#search-results li {
margin-bottom: 0;
gap: 0;
padding: 10px 0px;
}
.pagefind-modular-list-thumb {
display: none;
}
#search-input::placeholder {
--lm-input-placeholder-text-color: rgba(0, 0, 0, 0.8);
--dm-input-placeholder-text-color: rgba(255, 255, 255, 0.8);
}
#toc {
padding: 5px;
}
#toc ol {
padding: 5px;
margin: 0;
}
#toc li {
list-style-type: none;
margin-bottom: 0;
}
#toc a {
display: block;
height: auto;
}
#toc-side {
margin-top: 50px;
}
#toc-side span {
font-weight: 500;
font-size: 1.5rem;
margin-bottom: 1rem;
}
#toc-side ol:first-child {
border-left: 1px solid rgba(0, 0, 0, 0.15);
}
.dark-mode #toc-side ol:first-child {
border-left: 1px solid rgba(255, 255, 255, 0.15);
}
#toc-side a {
padding-left: 10px;
@media (prefers-color-scheme: dark) {
#logo-heading { color: #94cddc; }
html, body { background-color: #373B49; color: #9ba8bb; }
footer { background: #0b0b0b; color: #bbb; }
footer a { color: #36aaff; }
footer a:visited { color: #86afcc; }
.action-buttons a { color: #9cd9e8; }
:link { color: #449ddc; }
:visited { color: #5d8499; }
:link:active, :visited:active { color: #828f55; }
code, pre { color: #9eaa96 !important; }
article h1 { color: #c6cfee; text-decoration: underline; }
article h2, article h3, article h4, article h5 { color: #c6cfee; }
article code { background: #2e3440; color: #9eaa96; }
article hr { border: 1px solid #91bbdb; }
article blockquote, article pre { background: #21242d; border-left: 5px solid #355379; color: #7f8a95; }
#sidebar { background: #2c303c; color: #879cb3; }
#sidebar nav a { color: #8aa9b9; }
#sidebar .nav-section a { background: #304862; font-size: 12pt; }
#sidebar .nav-section:hover a, #sidebar .nav-section.active a { background: #20374f; }
}

View file

@ -1,24 +1,24 @@
/**
* Copied from https://github.com/PrismJS/prism-themes
*
*
*
*
*
*
* prism-themes License:
*
*
* The MIT License (MIT)
*
*
* Copyright (c) 2015 PrismJS
*
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@ -26,27 +26,27 @@
* 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.
*
*
*
*
*
*
*
*
* Nord Color Theme license:
*
*
* MIT License (MIT)
*
* Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com> (https://www.arcticicestudio.com)
*
* Copyright (c) 2016-present Arctic Ice Studio <development@arcticicestudio.com> (https://www.arcticicestudio.com)
* Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.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 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
@ -56,6 +56,7 @@
* SOFTWARE.
*/
/**
* Nord Theme Originally by Arctic Ice Studio
* https://nordtheme.com
@ -63,59 +64,59 @@
* Ported for PrismJS by Zane Hitchcoxc (@zwhitchcox) and Gabriel Ramos (@gabrieluizramos)
*/
code[class*='language-'],
pre[class*='language-'] {
color: #f8f8f2;
background: none;
font-family: 'Fira Code', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
font-family: "Fira Code", Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*='language-'] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*='language-'],
pre[class*='language-'] {
background: #2e3440;
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #2E3440;
}
/* Inline code */
:not(pre) > code[class*='language-'] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #636f88;
color: #636f88;
}
.token.punctuation {
color: #81a1c1;
color: #81A1C1;
}
.namespace {
opacity: 0.7;
opacity: .7;
}
.token.property,
@ -123,15 +124,15 @@ pre[class*='language-'] {
.token.constant,
.token.symbol,
.token.deleted {
color: #81a1c1;
color: #81A1C1;
}
.token.number {
color: #b48ead;
color: #B48EAD;
}
.token.boolean {
color: #81a1c1;
color: #81A1C1;
}
.token.selector,
@ -140,7 +141,7 @@ pre[class*='language-'] {
.token.char,
.token.builtin,
.token.inserted {
color: #a3be8c;
color: #A3BE8C;
}
.token.operator,
@ -149,34 +150,34 @@ pre[class*='language-'] {
.language-css .token.string,
.style .token.string,
.token.variable {
color: #81a1c1;
color: #81A1C1;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #88c0d0;
color: #88C0D0;
}
.token.keyword {
color: #81a1c1;
color: #81A1C1;
}
.token.regex,
.token.important {
color: #ebcb8b;
color: #EBCB8B;
}
.token.important,
.token.bold {
font-weight: bold;
font-weight: bold;
}
.token.italic {
font-style: italic;
font-style: italic;
}
.token.entity {
cursor: help;
cursor: help;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,020 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 893 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View file

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View file

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1 @@
Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="codeberg-favicon.svg"
id="svg1468"
version="1.1"
viewBox="0 0 4.2150375 4.2150376"
height="15.93085"
width="15.930851">
<defs
id="defs1462">
<linearGradient
gradientUnits="userSpaceOnUse"
y2="-6966.9307"
x2="42575.336"
y1="-7078.7891"
x1="42519.285"
id="linearGradient6918"
xlink:href="#linearGradient6924" />
<linearGradient
id="linearGradient6924">
<stop
id="stop6920"
offset="0"
style="stop-color:#2185d0;stop-opacity:0" />
<stop
style="stop-color:#2185d0;stop-opacity:0.48923996"
offset="0.49517274"
id="stop6926" />
<stop
id="stop6922"
offset="1"
style="stop-color:#2185d0;stop-opacity:0.63279623" />
</linearGradient>
</defs>
<sodipodi:namedview
showguides="true"
inkscape:snap-page="true"
inkscape:snap-global="true"
units="px"
fit-margin-bottom="0.64969"
fit-margin-right="0"
fit-margin-left="0"
fit-margin-top="0"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="14.621"
inkscape:cx="-3.0265425"
inkscape:zoom="32"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:window-width="3200"
inkscape:window-height="1672"
inkscape:window-x="0"
inkscape:window-y="54"
inkscape:window-maximized="1">
<inkscape:grid
id="grid2067"
type="xygrid"
originx="-0.0091209171"
originy="0.11900229" />
</sodipodi:namedview>
<metadata
id="metadata1465">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-44.876583,-76.12794)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<ellipse
style="fill:#ffffff;fill-opacity:0.98991939;stroke-width:0.26458332"
id="path4524"
cx="46.9841"
cy="78.235458"
rx="2.1075189"
ry="2.1075187" />
<g
transform="matrix(0.09136496,0,0,0.09136496,-980.82243,248.23174)"
id="g6933">
<path
id="path6733"
style="opacity:0.5;vector-effect:none;fill:url(#linearGradient6918);fill-opacity:1;stroke:none;stroke-width:3.67845988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
transform="scale(0.26458333)"
inkscape:connector-curvature="0" />
<path
transform="scale(0.26458333)"
id="circle6810"
style="opacity:1;fill:#2185d0;fill-opacity:1;stroke:none;stroke-width:2.01452994px;stroke-opacity:1;paint-order:stroke markers fill"
d="m 42517.32,-7119.4805 a 87.182358,87.182358 0 0 0 -86.855,87.1817 87.182358,87.182358 0 0 0 13.312,46.3047 l 72.688,-93.9727 a 1.3609979,1.0158567 0 0 1 2.359,0 l 72.692,93.9766 a 87.182358,87.182358 0 0 0 13.314,-46.3086 87.182358,87.182358 0 0 0 -87.182,-87.1817 87.182358,87.182358 0 0 0 -0.328,0 z"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="codeberg-dark.svg"
id="svg9965"
version="1.1"
viewBox="0 0 55.621185 55.621193"
width="55.621185"
height="55.621193">
<metadata
id="metadata9971">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs9969">
<linearGradient
xlink:href="#linearGradient6924"
id="linearGradient6918"
x1="42519.285"
y1="-7078.7891"
x2="42575.336"
y2="-6966.9307"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6924">
<stop
style="stop-color:#ffffff;stop-opacity:0"
offset="0"
id="stop6920" />
<stop
id="stop6926"
offset="0.49517274"
style="stop-color:#ffffff;stop-opacity:0.5" />
<stop
style="stop-color:#fdfeff;stop-opacity:1"
offset="1"
id="stop6922" />
</linearGradient>
</defs>
<sodipodi:namedview
inkscape:current-layer="svg9965"
inkscape:cy="72.714836"
inkscape:cx="44.928006"
inkscape:zoom="7.2407734"
showgrid="false"
id="namedview9967"
inkscape:window-height="1672"
inkscape:window-width="3200"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff"
fit-margin-bottom="2.26835"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
inkscape:window-x="0"
inkscape:window-y="54"
inkscape:window-maximized="1" />
<!-- outline -->
<!-- small shadow -->
<!-- mountain in foreground -->
<!-- text -->
<g
transform="matrix(1.2056422,0,0,1.2056422,-13535.014,2271.0633)"
id="g6933">
<path
transform="scale(0.26458333)"
d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
style="opacity:0.5;vector-effect:none;fill:url(#linearGradient6918);fill-opacity:1;stroke:none;stroke-width:3.67845988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
id="path6733"
inkscape:connector-curvature="0" />
<path
transform="scale(0.26458333)"
d="m 42517.32,-7119.4805 a 87.182358,87.182358 0 0 0 -86.855,87.1817 87.182358,87.182358 0 0 0 13.312,46.3047 l 72.688,-93.9727 a 1.3609979,1.0158567 0 0 1 2.359,0 l 72.692,93.9766 a 87.182358,87.182358 0 0 0 13.314,-46.3086 87.182358,87.182358 0 0 0 -87.182,-87.1817 87.182358,87.182358 0 0 0 -0.328,0 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.01452994px;stroke-opacity:1;paint-order:stroke markers fill"
id="circle6810"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="codeberg.svg"
id="svg10"
version="1.1"
viewBox="0 0 100 58">
<metadata
id="metadata16">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs14">
<linearGradient
xlink:href="#linearGradient6924"
id="linearGradient6918"
x1="42519.285"
y1="-7078.7891"
x2="42575.336"
y2="-6966.9307"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6924">
<stop
style="stop-color:#ffffff;stop-opacity:0"
offset="0"
id="stop6920" />
<stop
id="stop6926"
offset="0.49517274"
style="stop-color:#71c2ff;stop-opacity:1" />
<stop
style="stop-color:#39aaff;stop-opacity:1"
offset="1"
id="stop6922" />
</linearGradient>
</defs>
<sodipodi:namedview
inkscape:current-layer="svg10"
inkscape:cy="17.573059"
inkscape:cx="45.102208"
inkscape:zoom="6.6465517"
showgrid="false"
id="namedview12"
inkscape:window-height="480"
inkscape:window-width="640"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<!-- outline -->
<!-- small shadow -->
<!-- mountain in foreground -->
<!-- text -->
<g
transform="matrix(0.49902103,0,0,0.49902103,16.383035,-5.830387)"
id="layer1">
<g
transform="matrix(1.4006354,0,0,1.4006354,-15690.065,2662.0533)"
id="g6939">
<path
transform="scale(0.26458333)"
d="m 42405.785,-6929.3027 c -6.178,0 -11.002,2.0754 -14.474,6.2246 -3.518,4.1491 -5.278,9.6275 -5.278,16.4375 0,5.2313 1.286,9.7874 3.856,13.666 3.563,5.4118 8.974,8.1172 16.236,8.1172 5.049,0 9.447,-1.872 13.191,-5.6153 l -3.451,-5.3437 c -3.336,2.1198 -6.221,3.1797 -8.658,3.1797 -3.699,0 -6.653,-1.4205 -8.863,-4.2617 -2.074,-2.7062 -3.112,-5.9541 -3.112,-9.7422 0,-4.2845 0.88,-7.7572 2.639,-10.418 2.031,-3.1118 4.894,-4.668 8.59,-4.668 2.661,0 5.615,1.1725 8.863,3.5176 l 3.451,-5.6133 c -4.331,-3.653 -8.661,-5.4804 -12.99,-5.4804 z m 122.604,0 -8.522,4.8027 v 38.8301 h 6.901 l 0.677,-3.043 c 2.074,2.5706 5.004,3.8555 8.791,3.8555 3.835,0 7.061,-1.1512 9.676,-3.4512 3.336,-3.0216 5.004,-7.4634 5.004,-13.3262 0,-4.5551 -1.126,-8.208 -3.379,-10.959 -2.572,-3.1118 -6.136,-4.6679 -10.689,-4.6679 -1.626,0 -3.114,0.3158 -4.467,0.9472 -1.714,0.8116 -3.045,1.9396 -3.992,3.3829 z m -45.871,0.1347 -8.528,4.7364 v 9.8086 c -2.119,-1.7137 -4.734,-2.5704 -7.845,-2.5704 -3.609,0 -6.698,1.1958 -9.268,3.586 -3.427,3.202 -5.141,7.7561 -5.141,13.664 0,4.1943 1.061,7.6225 3.18,10.2832 2.525,3.2021 6.198,4.8028 11.023,4.8028 1.716,0 3.386,-0.3837 5.008,-1.1504 1.623,-0.7665 2.797,-1.7356 3.52,-2.9082 l 1.217,3.2461 h 6.834 z m -47.993,11.9746 c -4.422,0 -8.008,1.3973 -10.757,4.1934 -3.024,3.0667 -4.536,7.0803 -4.536,12.041 0,4.3747 1.353,8.0741 4.059,11.0957 3.024,3.3373 6.77,5.0059 11.234,5.0059 3.833,0 7.192,-1.3082 10.077,-3.9238 3.474,-3.1119 5.21,-7.1717 5.21,-12.1778 0,-4.2842 -1.171,-7.9141 -3.517,-10.8906 -2.797,-3.5628 -6.72,-5.3438 -11.77,-5.3438 z m 67.071,0 c -4.374,0 -7.982,1.4438 -10.825,4.3301 -3.157,3.1569 -4.736,7.1472 -4.736,11.9727 0,4.9159 1.399,8.7722 4.195,11.5683 2.933,2.9765 7.016,4.4649 12.247,4.4649 4.87,0 8.929,-1.4438 12.177,-4.3301 l -2.166,-4.5313 c -3.202,1.8039 -6.269,2.7051 -9.199,2.7051 -2.076,0 -3.88,-0.6764 -5.412,-2.0293 -1.494,-1.3981 -2.33,-3.1345 -2.506,-5.209 h 21.109 v -3.1113 c 0,-4.4649 -1.173,-8.0965 -3.519,-10.8926 -2.706,-3.2922 -6.495,-4.9375 -11.365,-4.9375 z m 67.666,0 c -4.374,0 -7.982,1.4438 -10.824,4.3301 -3.158,3.1569 -4.737,7.1472 -4.737,11.9727 0,4.9159 1.399,8.7722 4.195,11.5683 2.931,2.9765 7.013,4.4649 12.247,4.4649 4.87,0 8.928,-1.4438 12.173,-4.3301 l -2.162,-4.5313 c -3.202,1.8039 -6.27,2.7051 -9.203,2.7051 -2.074,0 -3.877,-0.6764 -5.412,-2.0293 -1.492,-1.3981 -2.326,-3.1345 -2.502,-5.209 h 21.108 v -3.1113 c 0,-4.4649 -1.172,-8.0965 -3.518,-10.8926 -2.706,-3.2922 -6.495,-4.9375 -11.365,-4.9375 z m 33.017,0 c -1.353,0 -2.684,0.3604 -3.992,1.0821 -1.265,0.6763 -2.121,1.4884 -2.572,2.4355 l -0.811,-2.7051 h -7.24 v 30.711 h 8.391 v -22.0528 c 0.72,-1.5785 1.848,-2.3671 3.383,-2.3671 1.668,0 3.245,0.8564 4.734,2.5703 l 7.17,-3.9239 c -1.986,-3.8334 -5.006,-5.75 -9.063,-5.75 z m 22.016,0 c -3.563,0 -6.654,1.1958 -9.272,3.586 -3.426,3.202 -5.14,7.7561 -5.14,13.664 0,4.1492 1.06,7.5774 3.179,10.2832 2.482,3.2021 5.979,4.8028 10.489,4.8028 3.696,0 6.559,-1.5116 8.59,-4.5332 0,6.7648 -2.435,10.1484 -7.305,10.1484 -3.429,0 -6.519,-0.9029 -9.268,-2.707 l -2.166,4.3301 c 3.563,3.2471 7.78,4.8711 12.651,4.8711 4.689,0 8.297,-1.3758 10.824,-4.127 2.57,-2.7961 3.855,-6.7883 3.855,-11.9746 v -27.5313 h -6.562 l -0.676,3.3145 c 0,-0.451 -0.653,-1.1273 -1.961,-2.0293 -1.985,-1.3979 -4.398,-2.0977 -7.238,-2.0977 z m -122.768,6.0215 c 4.06,0 6.203,2.2094 6.43,6.6289 h -13.059 c 0.497,-4.4195 2.706,-6.6289 6.629,-6.6289 z m 67.666,0 c 4.057,0 6.199,2.2094 6.426,6.6289 h -13.055 c 0.497,-4.4195 2.706,-6.6289 6.629,-6.6289 z m -134.668,0.066 c 4.375,0 6.561,3.3819 6.561,10.1465 0,6.4943 -2.186,9.7422 -6.561,9.7422 -4.376,0 -6.566,-3.2479 -6.566,-9.7422 0,-6.7646 2.19,-10.1465 6.566,-10.1465 z m 33.446,0 c 1.489,0 2.774,0.4963 3.857,1.4883 1.126,0.9472 1.847,2.1642 2.162,3.6524 v 8.5918 c -0.224,1.6685 -1.035,3.1568 -2.433,4.4648 -1.399,1.2626 -2.909,1.8945 -4.532,1.8945 -4.374,0 -6.562,-3.3603 -6.562,-10.0801 0,-3.0667 0.678,-5.5008 2.031,-7.3046 1.353,-1.8039 3.179,-2.7071 5.477,-2.7071 z m 158.15,0 c 1.444,0 2.75,0.5196 3.922,1.5567 1.222,0.9922 1.921,2.186 2.098,3.584 v 7.7812 c 0,1.9392 -0.677,3.629 -2.03,5.0723 -1.353,1.3979 -2.953,2.0976 -4.802,2.0976 -4.42,0 -6.631,-3.3603 -6.631,-10.0801 0,-3.0667 0.678,-5.5008 2.031,-7.3046 1.353,-1.8039 3.157,-2.7071 5.412,-2.7071 z m -90.898,0.068 c 2.073,0 3.697,0.9012 4.871,2.7051 1.171,1.8038 1.758,4.2612 1.758,7.373 0,3.1569 -0.631,5.6393 -1.893,7.4434 -1.262,1.8038 -2.976,2.7051 -5.141,2.7051 -1.67,0 -3.138,-0.5641 -4.4,-1.6915 -1.227,-1.1275 -1.903,-2.5248 -2.029,-4.1933 v -7.375 c 0,-1.9392 0.655,-3.5844 1.963,-4.9375 1.353,-1.3528 2.976,-2.0293 4.871,-2.0293 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.8986px;line-height:1.25;font-family:Tajawal;-inkscape-font-specification:'Tajawal Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-0.284861px;word-spacing:0px;fill:#2185d0;fill-opacity:1;stroke:none;stroke-width:1.69121"
id="path6736" />
<g
id="g6933">
<path
id="path6733"
style="font-variation-settings:normal;opacity:0.5;vector-effect:none;fill:url(#linearGradient6918);fill-opacity:1;stroke:none;stroke-width:3.67846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
transform="scale(0.26458333)" />
<path
id="circle6810"
style="opacity:1;fill:#2185d0;fill-opacity:1;stroke:none;stroke-width:2.01453px;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 42517.32,-7119.4805 a 87.182358,87.182358 0 0 0 -86.855,87.1817 87.182358,87.182358 0 0 0 13.312,46.3047 l 72.688,-93.9727 a 1.3609979,1.0158567 0 0 1 2.359,0 l 72.692,93.9766 a 87.182358,87.182358 0 0 0 13.314,-46.3086 87.182358,87.182358 0 0 0 -87.182,-87.1817 87.182358,87.182358 0 0 0 -0.328,0 z"
transform="scale(0.26458333)" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

22
assets/js/collapse.js Normal file
View file

@ -0,0 +1,22 @@
function onCollapseButtonClick(button) {
let icon = button.querySelector(".fas")
let collapseId = button.dataset["collapseId"]
let collapseElement = document.getElementById(collapseId)
if (collapseElement.style.maxHeight == "0px") {
icon.classList.remove("fa-plus-square")
icon.classList.add("fa-minus-square")
collapseElement.style.maxHeight = collapseElement.scrollHeight + "px"
} else {
console.log(collapseElement.style.maxHeight)
if (collapseElement.style.maxHeight === "") { // This is a workaround to fix animation when no initial maxHeight has been set
collapseElement.style.maxHeight = collapseElement.scrollHeight + "px"
void collapseElement.offsetWidth // Needed to trigger render
}
icon.classList.add("fa-plus-square")
icon.classList.remove("fa-minus-square")
collapseElement.style.maxHeight = "0px"
}
}

43
assets/js/sidebar.js Normal file
View file

@ -0,0 +1,43 @@
function getSidebar() {
return document.querySelector("#sidebar")
}
function getSidebarOverlay() {
return document.querySelector("#sidebar-overlay")
}
function hideSidebar() {
resetSidebarAnimation()
getSidebar().style.animation = "slideSidebar 0.5s ease-in-out reverse backwards"
}
function showSidebar() {
resetSidebarAnimation()
const sidebar = getSidebar()
sidebar.classList.add("sidebar-in")
sidebar.style.animation = "slideSidebar 0.5s ease-in-out normal forwards"
const overlay = getSidebarOverlay()
overlay.classList.add("sidebar-overlay-in")
overlay.style.animation = "fadeOverlay 0.5s ease-in-out normal forwards"
}
function resetSidebarAnimation() {
const sidebar = getSidebar()
sidebar.classList.remove("sidebar-in")
sidebar.style.animation = "none"
void sidebar.offsetWidth // Needed to restart animation
const overlay = getSidebarOverlay()
overlay.classList.remove("sidebar-overlay-in")
overlay.style.animation = "none"
void overlay.offsetWidth // Needed to restart animation
}
function toggleSidebar() {
if (getSidebar().classList.contains("sidebar-in"))
hideSidebar()
else
showSidebar()
}

View file

@ -1,3 +0,0 @@
module.exports = {
environment: process.env.ELEVENTY_ENV,
};

View file

@ -1,4 +1,4 @@
{
"commitHistoryMaster": "https://codeberg.org/Codeberg/Documentation/commits",
"docsSourcesMaster": "https://codeberg.org/Codeberg/Documentation/src"
"commitHistoryMaster": "https://codeberg.org/Codeberg/Documentation/commits/branch/master",
"docsSourcesMaster": "https://codeberg.org/codeberg/documentation/src/branch/master"
}

View file

@ -1,16 +1,19 @@
<div class="card" data-pagefind-ignore="all">
<div class="contribution-invitation">
<hr>
<blockquote>
<p>Hey there! 👋 Thank you for reading this article!</p>
<p>
Is there something missing, or do you have an idea on how to improve the documentation?
Is there something missing or do you have an idea on how to improve the documentation?
Do you want to write your own article?
</p>
<p>
You're invited to contribute to the Codeberg Documentation at <a href="https://codeberg.org/Codeberg/Documentation">its source code repository</a>,
for example, by <a href="/collaborating/pull-requests-and-git-flow">adding a pull request</a>
for example by <a href="/collaborating/pull-requests-and-git-flow">Adding a pull request</a>
or joining in on the discussion in <a href="https://codeberg.org/Codeberg/Documentation/issues">the issue tracker</a>.
</p>
<p>
For an introduction on contributing to Codeberg Documentation, please have a look
at <a href="https://docs.codeberg.org/improving-codeberg/docs-contributor-faq">the Contributor FAQ</a>.
</p>
</div>
</blockquote>
</div>

View file

@ -1,210 +1,120 @@
<!DOCTYPE html>
<html lang="en" class="codeberg-design">
<html lang="en">
<head>
<title>{% if eleventyNavigation.title %}{{ eleventyNavigation.title }} | {% endif %}Codeberg Documentation</title>
<meta charset="UTF-8" />
{% if description %}
<meta name="description" content="{{ description }}" />
{% endif %}
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{% if env.environment == "testing" %}
<meta name="robots" content="noindex" />
{% endif %}
<meta charset="UTF-8">
{% if description %}<meta name="description" content="{{ description }}">{% endif %}
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.ico" type="image/x-icon" />
<link rel="icon" href="https://design.codeberg.org/logo-kit/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="https://design.codeberg.org/logo-kit/apple-touch-icon.png" />
<link rel="icon" type="image/svg+xml" href="/assets/images/logo/codeberg-favicon.svg" sizes="250x250">
<link rel="preload" type="text/css" href="/assets/css/codeberg-docs.css" as="style" />
<link rel="preload" type="text/css" href="https://design.codeberg.org/design-kit/codeberg.css" as="style" />
<link rel="preload" href="https://fonts.codeberg.org/dist/inter/Inter%20Web/inter.css" as="style" />
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome6/css/svg-with-js.css" as="style" />
<link rel="preload" type="text/css" href="/assets/css/codeberg-docs.css">
<link rel="preload" href="https://fonts.codeberg.org/dist/inter/Inter Web/inter.css" as="style">
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome5/css/solid.min.css" as="style">
<link rel="preload" href="https://fonts.codeberg.org/dist/fontawesome5/css/fontawesome.min.css" as="style">
<!-- Details and License: https://codeberg.org/Codeberg/Design/src/design-kit -->
<link rel="stylesheet" href="https://design.codeberg.org/design-kit/codeberg.css" />
<script defer src="https://design.codeberg.org/design-kit/codeberg.js"></script>
<link rel="stylesheet" type="text/css" href="/assets/css/codeberg-docs.css" />
<!-- Syntax highlighting -->
<link rel="stylesheet" type="text/css" href="/assets/css/prism-nord.css" />
<link rel="stylesheet" type="text/css" href="/assets/css/codeberg-docs.css" async>
<link rel="stylesheet" type="text/css" href="/assets/css/prism-nord.css" async>
<!-- Details and License: https://fonts.codeberg.org/fonts/inter -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/inter/Inter%20Web/inter.css" />
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/inter/Inter Web/inter.css" async>
<!-- Details and License: https://fonts.codeberg.org/fonts/fontawesome5 -->
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome6/css/svg-with-js.css" />
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome5/css/solid.min.css" async>
<link rel="stylesheet" type="text/css" href="https://fonts.codeberg.org/dist/fontawesome5/css/fontawesome.min.css" async>
<link href="/pagefind/pagefind-modular-ui.css" rel="stylesheet" />
<script src="/pagefind/pagefind-modular-ui.js"></script>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
const instance = new PagefindModularUI.Instance();
instance.add(
new PagefindModularUI.Input({
containerElement: '#search-input',
}),
);
instance.add(
new PagefindModularUI.ResultList({
containerElement: '#search-results',
}),
);
document.addEventListener(
'keydown',
(event) => {
if (event.key == '/') {
event.preventDefault();
document.getElementById('search-input').focus();
}
},
false,
);
});
</script>
{% if page.url != '/' %}
<script>
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0
document.addEventListener('DOMContentLoaded', function () {
document.getElementsByClassName('active')[0].scrollIntoView({ block: 'center' });
});
// @license-end
</script>
{% endif %}
<script type="text/javascript" src="/assets/js/collapse.js"></script>
<script type="text/javascript" src="/assets/js/sidebar.js"></script>
</head>
<body data-set-preferred-mode-onload="true">
{% include 'license.njk' %}
<div class="with-navbar with-sidebar with-transitions page-wrapper" data-sidebar-type="overlayed-sm-and-down">
<div class="sidebar-overlay" onclick="halfmoon.toggleSidebar()"></div>
<nav class="navbar">
<div class="navbar-content">
<button class="btn btn-primary" type="button" onclick="halfmoon.toggleSidebar()">
{% fas_icon "bars" %}
<span class="sr-only">Toggle sidebar</span>
</button>
</div>
<!-- Navbar brand -->
<a href="/" class="navbar-brand" title="Codeberg Docs">
<img src="https://design.codeberg.org/logo-kit/icon_inverted.svg" height="22" width="22" alt="Codeberg" />
Docs
</a>
<!-- Navbar nav -->
<ul class="d-md-flex ml-auto d-none navbar-nav">
<li class="nav-item">
<a
href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}"
class="nav-link"
target="_blank"
rel="noreferrer"
>
{% fas_icon "history" %} &nbsp; View History
</a>
</li>
<li class="nav-item">
<a
href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}"
class="nav-link"
target="_blank"
rel="noreferrer"
>
{% fas_icon "code" %} &nbsp; View Source
</a>
</li>
{#
<li class="nav-item">
<a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="nav-link">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a>
</li>
#}
</ul>
<!-- Navbar content (dropdown menu) -->
<div class="ml-auto d-md-none navbar-content">
<div class="with-arrow dropdown">
<button class="btn" data-toggle="dropdown" type="button" id="navbar-dropdown-toggle-btn-1">
Menu {% fas_icon "angle-down" %}
</button>
<div class="dropdown-menu-right w-200 dropdown-menu" aria-labelledby="navbar-dropdown-toggle-btn-1">
<a
href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}"
class="dropdown-item"
target="_blank"
rel="noreferrer"
>
{% fas_icon "history" %} &nbsp; View History
</a>
<a
href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}"
class="dropdown-item"
target="_blank"
rel="noreferrer"
>
{% fas_icon "code" %} &nbsp; View Source
</a>
{#
<a href="javascript:;" onclick="document.body.classList.toggle('dark-mode')" class="dropdown-item">
{% fas_icon "moon" %} &nbsp; Toggle Dark Mode
</a>
#}
<div class="mt-5 dropdown-divider"></div>
<body>
<div id="sidebar-overlay" onclick="javascript:hideSidebar()"></div>
<header>
<div class="container">
<div id="header-logo">
<a href="/">
<div id="header-logo-container">
<img src="/assets/images/logo/codeberg-favicon.svg" alt="Codeberg">
<div id="logo-heading">Documentation</div>
</div>
</div>
</div>
</nav>
<div class="sidebar">
<div class="sidebar-menu">
<!-- Sidebar content with the search box -->
<div class="sidebar-content">
<input type="text" class="form-control" placeholder="Filter Docs" id="search-input" />
<div class="mt-10 font-size-12">Press <kbd>/</kbd> to focus</div>
<div id="search-results"></div>
</div>
{% for entry in collections.all | eleventyNavigation %} {% set active = entry.url == page.url or entry.key ==
eleventyNavigation.parent %} {% if (not entry.draft) or active %}
<h5 class="sidebar-title {% if active %} active{% endif %}">
<a href="{{ entry.url }}" id="{{ entry.key }}"
>{% fas_icon entry.icon | default("caret-right") %} {{ entry.title }}</a
>
</h5>
<div class="sidebar-divider"></div>
{% if entry.children.length > 0 %} {% for child in entry.children %} {% set child_active = child.url ==
page.url %} {% if child_active or not child.draft %}
<a href="{{ child.url }}" class="sidebar-link{% if child_active %} active{% endif %}" id="{{ child.key }}">
<span class="name">{{ child.title }}</span>
</a>
{% endif %} {% endfor %} {% endif %} {% endif %}
<br />
{%- endfor %}
</div>
<div class="action-buttons" id="header-action-buttons">
<!--<a href="#">{% fas_icon "globe-europe" %} English</a>-->
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" target="_blank">{% fas_icon "history" %} View History</a>
<a href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}" target="_blank">{% fas_icon "code" %} View Source</a>
<a href="#" id="contents-button" onclick="toggleSidebar()">{% fas_icon "bars" %}</a>
</div>
<div id="mobile-contents-button"><a href="#" onclick="toggleSidebar()">{% fas_icon "bars" %}</a></div>
</div>
</header>
<main>
<div class="container">
<div id="sidebar">
<nav>
<div class="sidebar-close-button"><a href="javascript:void(0)" onclick="hideSidebar()">{% fas_icon "times-circle" %}</a></div>
<ul>
{% for entry in collections.all | eleventyNavigation %}
{% set active = entry.url == page.url or entry.key == eleventyNavigation.parent %}
{% if (not entry.draft) or active %}
<li class="nav-section{% if active %} active{% endif %}" style="display: flex;">
<a class="section-link" href="{{ entry.url }}" style="flex: 1;">{% fas_icon entry.icon | default("caret-right") %} {{ entry.title }}</a>
{% if entry.children.length > 0 %}
<a class="section-collapse-button" data-collapse-id="nav-second-level-{{ entry.key }}" href="javascript:void(0)" onclick="onCollapseButtonClick(this)">
{% if active %}{% fas_icon "minus-square" %}{% else %}{% fas_icon "plus-square" %}{% endif %}
</a>
{% else %}
<a class="section-collapse-button"><!-- Intentionally left blank --></a>
{% endif %}
</li>
{% if entry.children.length > 0 %}
<li class="nav-second-level collapsible" id="nav-second-level-{{ entry.key }}"{% if not active %} style="max-height: 0px;"{% endif %}>
<ul>
{% for child in entry.children %}
{% set child_active = child.url == page.url %}
{% if child_active or not child.draft %}
<li><a href="{{ child.url }}"{% if child_active %} class="active"{% endif %}>{{ child.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endif %}
{% endif %}
{%- endfor %}
</ul>
</nav>
</div>
<div class="flex-spacer"></div>
<article>
{% if eleventyNavigation.title %}<h1>{{ eleventyNavigation.title }}</h1>{% endif %}
{% if eleventyNavigation.draft %}<strong>Please note that this article is still a draft and might not have any contents yet.</strong>{% endif %}
{{ content | safe }}
{% if page.url != '/' %}{% include 'contribution_invitation.njk' %}{% endif %}
</article>
</div>
<div class="content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xl-8 content" data-pagefind-body>
{% if eleventyNavigation.title %}
<h1 class="content-title font-size-24">{{ eleventyNavigation.title }}</h1>
{% endif %} {% if eleventyNavigation.draft %}
<strong data-pagefind-ignore="all"
>Please note that this article is still a draft and might not have any contents yet.</strong
>
{% endif %} {% include 'toc-collapse.njk' %}
{{ content | safe }}
<hr class="mb-20" />
{% if page.url != '/' %} {% include 'contribution_invitation.njk' %} {% endif %}
<div class="text-right font-size-16" data-pagefind-ignore="all">
<p>&copy; Codeberg Docs Contributors. See <a href="#modal-1" role="button">LICENSE</a></p>
</div>
</div>
{% include 'toc-side.njk' %}
</div>
</div>
<div class="action-buttons" id="mobile-action-buttons">
<!--<a href="#">{% fas_icon "globe-europe" %} English</a>-->
<a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" target="_blank">{% fas_icon "history" %} View History</a>
<a href="{{ urls.docsSourcesMaster }}/{{ page.inputPath }}" target="_blank">{% fas_icon "code" %} View Source</a>
</div>
</div>
</main>
<footer>
This Website by <a href="{{ urls.docsSourcesMaster }}/CONTRIBUTORS.md">The Codeberg Documentation Contributors</a> is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC-BY-SA 4.0</a>.
It bundles third-party font software licensed under a different license.
Please look at <a href="{{ urls.docsSourcesMaster }}/LICENSE.md">the LICENSE file</a> for details.<br>
Changes to the original versions of the article as well as its individual authors can be looked up in <a href="{{ urls.commitHistoryMaster }}/{{ page.inputPath }}" target="_blank">this article's commit history</a><br>
Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.<br>
For Imprint, Privacy Policy and other legal notices, please refer to <a href="https://codeberg.org">https://codeberg.org</a>.
</footer>
</body>
</html>

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