Initial checkin
This commit is contained in:
parent
eca7361360
commit
c876ad6603
11
.editorconfig
Normal file
11
.editorconfig
Normal file
@ -0,0 +1,11 @@
|
||||
# editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
4
.eslintignore
Normal file
4
.eslintignore
Normal file
@ -0,0 +1,4 @@
|
||||
assets/js/index.js
|
||||
assets/js/katex.js
|
||||
assets/js/vendor
|
||||
node_modules
|
31
.eslintrc.json
Normal file
31
.eslintrc.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"commonjs": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"no-console": 0,
|
||||
"quotes": ["error", "single"],
|
||||
"comma-dangle": [
|
||||
"error",
|
||||
{
|
||||
"arrays": "always-multiline",
|
||||
"objects": "always-multiline",
|
||||
"imports": "always-multiline",
|
||||
"exports": "always-multiline",
|
||||
"functions": "ignore"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
public
|
||||
resources
|
||||
.netlify
|
||||
.hugo_build.lock
|
11
.markdownlint-cli2.jsonc
Normal file
11
.markdownlint-cli2.jsonc
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"config": {
|
||||
"default": true,
|
||||
"MD013": false,
|
||||
"MD024": false,
|
||||
"MD026": false,
|
||||
"MD033": false,
|
||||
"MD034": false
|
||||
},
|
||||
"ignores": ["node_modules", "CHANGELOG.md", "README.md"]
|
||||
}
|
3
.stylelintignore
Normal file
3
.stylelintignore
Normal file
@ -0,0 +1,3 @@
|
||||
assets/scss/components/_syntax.scss
|
||||
assets/scss/vendor
|
||||
node_modules
|
48
.stylelintrc.json
Normal file
48
.stylelintrc.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"extends": "stylelint-config-standard-scss",
|
||||
"rules": {
|
||||
"no-empty-source": null,
|
||||
"string-quotes": "double",
|
||||
"scss/comment-no-empty": null,
|
||||
"max-line-length": null,
|
||||
"scss/at-extend-no-missing-placeholder": null,
|
||||
"scss/dollar-variable-colon-space-after": null,
|
||||
"scss/dollar-variable-empty-line-before": null,
|
||||
"color-function-notation": null,
|
||||
"alpha-value-notation": null,
|
||||
"selector-id-pattern": null,
|
||||
"selector-class-pattern": null,
|
||||
"scss/no-global-function-names": null,
|
||||
"number-max-precision": null,
|
||||
"hue-degree-notation": null,
|
||||
"value-no-vendor-prefix": null,
|
||||
"property-no-vendor-prefix": null,
|
||||
"at-rule-no-unknown": [
|
||||
true,
|
||||
{
|
||||
"ignoreAtRules": [
|
||||
"extend",
|
||||
"at-root",
|
||||
"debug",
|
||||
"warn",
|
||||
"error",
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"each",
|
||||
"while",
|
||||
"mixin",
|
||||
"include",
|
||||
"content",
|
||||
"return",
|
||||
"function",
|
||||
"tailwind",
|
||||
"apply",
|
||||
"responsive",
|
||||
"variants",
|
||||
"screen"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
21
LICENSE
21
LICENSE
@ -1,9 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 ClusterCockpit
|
||||
Copyright (c) 2018-present, Gridsome
|
||||
Copyright (c) 2020-present, Henk Verlinde
|
||||
|
||||
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:
|
||||
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 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 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.
|
||||
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.
|
||||
|
160
README.md
160
README.md
@ -1,3 +1,159 @@
|
||||
# cc-docs
|
||||
<p align="center">
|
||||
<a href="https://getdoks.org/">
|
||||
<img alt="Doks" src="https://doks.netlify.app/doks.svg" width="60">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
ClusterCockpit static documentation webpages
|
||||
<h1 align="center">
|
||||
Doks
|
||||
</h1>
|
||||
|
||||
<h3 align="center">
|
||||
Modern Documentation Theme
|
||||
</h3>
|
||||
|
||||
<p align="center">
|
||||
Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/h-enk/doks/blob/master/LICENSE">
|
||||
<img src="https://img.shields.io/github/license/h-enk/doks?style=flat-square" alt="GitHub">
|
||||
</a>
|
||||
<a href="https://github.com/h-enk/doks/releases">
|
||||
<img src="https://img.shields.io/github/v/release/h-enk/doks?include_prereleases&style=flat-square"alt="GitHub release (latest SemVer including pre-releases)">
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/@hyas/doks">
|
||||
<img src="https://img.shields.io/npm/v/@hyas/doks?style=flat-square" alt="npm (scoped)">
|
||||
</a>
|
||||
<a href="https://github.com/h-enk/doks/actions?query=workflow%3A%22Hyas+CI%22">
|
||||
<img src="https://img.shields.io/github/workflow/status/h-enk/doks/Hyas%20CI/master?style=flat-square" alt="GitHub Workflow Status (branch)">
|
||||
</a>
|
||||
<a href="https://app.netlify.com/sites/doks/deploys">
|
||||
<img src="https://img.shields.io/netlify/8a1009d5-88ac-413e-96ef-3f928674a083?style=flat-square" alt="Netlify">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
![Doks — Modern Documentation Theme](https://raw.githubusercontent.com/h-enk/doks/master/images/doks.png)
|
||||
|
||||
## Demo
|
||||
|
||||
- [doks.netlify.app](https://doks.netlify.app/)
|
||||
|
||||
## Why Doks?
|
||||
|
||||
Nine main reasons why you should use Doks:
|
||||
|
||||
1. __Security aware__. Get A+ scores on [Mozilla Observatory](https://observatory.mozilla.org/analyze/doks.netlify.app) out of the box. Easily change the default Security Headers to suit your needs.
|
||||
|
||||
2. __Fast by default__. Get 100 scores on [Google Lighthouse](https://googlechrome.github.io/lighthouse/viewer/?gist=59aafe464a68f8bc30b8e9a636d5b053) by default. Doks removes unused css, prefetches links, and lazy loads images.
|
||||
|
||||
3. __SEO-ready__. Use sensible defaults for structured data, open graph, and Twitter cards. Or easily change the SEO settings to your liking.
|
||||
|
||||
4. __Development tools__. Code with confidence. Check styles, scripts, and markdown for errors and fix automatically or manually.
|
||||
|
||||
5. __Bootstrap framework__. Build robust, flexible, and intuitive websites with Bootstrap 5. Easily customize your Doks site with the source Sass files.
|
||||
|
||||
6. __Netlify-ready__. Deploy to Netlify with sensible defaults. Easily use Netlify Functions, Netlify Redirects, and Netlify Headers.
|
||||
|
||||
7. __Full text search__. Search your Doks site with FlexSearch. Easily customize index settings and search options to your liking.
|
||||
|
||||
8. __Page layouts__. Build pages with a landing page, blog, or documentation layout. Add custom sections and components to suit your needs.
|
||||
|
||||
9. __Dark mode__. Switch to a low-light UI with the click of a button. Change colors with variables to match your branding.
|
||||
|
||||
### Other features
|
||||
|
||||
- __Multilingual and i18n__ support
|
||||
- __Versioning__ documentation support
|
||||
- __KaTeX__ math typesetting
|
||||
- __Mermaid__ diagrams and visualization
|
||||
- __highlight.js__ syntax highlighting
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Git](https://git-scm.com/) — latest source release
|
||||
- [Node.js](https://nodejs.org/) — latest LTS version or newer
|
||||
|
||||
<details>
|
||||
<summary>Why Node.js?</summary>
|
||||
|
||||
Doks uses npm (included with Node.js) to centralize dependency management, making it [easy to update](https://getdoks.org/docs/help/how-to-update/) resources, build tooling, plugins, and build scripts.
|
||||
|
||||
</details>
|
||||
|
||||
## Get started
|
||||
|
||||
Start a new Doks project in three steps:
|
||||
|
||||
### 1. Create a new site
|
||||
|
||||
Doks is available as a child theme and a starter theme.
|
||||
|
||||
#### Child theme
|
||||
|
||||
- Intended for novice to intermediate users
|
||||
- Intended for minor customizations
|
||||
- [Easily update npm packages](https://getdoks.org/docs/help/how-to-update/) — __including__ [Doks](https://www.npmjs.com/package/@hyas/doks)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/h-enk/doks-child-theme.git my-doks-site && cd my-doks-site
|
||||
```
|
||||
|
||||
#### Starter theme
|
||||
|
||||
- Intended for intermediate to advanced users
|
||||
- Intended for major customizations
|
||||
- [Easily update npm packages](https://getdoks.org/docs/help/how-to-update/)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/h-enk/doks.git my-doks-site && cd my-doks-site
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Help me choose</summary>
|
||||
|
||||
Not sure which one is for you? Pick the child theme.
|
||||
|
||||
</details>
|
||||
|
||||
### 2. Install dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Other commands
|
||||
|
||||
Doks comes with [commands](https://getdoks.org/docs/prologue/commands/) for common tasks.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Netlify](https://docs.netlify.com/)
|
||||
- [Hugo](https://gohugo.io/documentation/)
|
||||
- [Doks](https://getdoks.org/)
|
||||
|
||||
## Communities
|
||||
|
||||
- [Netlify Community](https://community.netlify.com/)
|
||||
- [Hugo Forums](https://discourse.gohugo.io/)
|
||||
- [Doks Discussions](https://github.com/h-enk/doks/discussions)
|
||||
|
||||
## Sponsors
|
||||
|
||||
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
|
||||
|
||||
[![OC sponsor 0](https://opencollective.com/doks/tiers/sponsor/0/avatar.svg)](https://opencollective.com/doks/tiers/sponsor/0/website)
|
||||
[![OC sponsor 1](https://opencollective.com/doks/tiers/sponsor/1/avatar.svg)](https://opencollective.com/doks/tiers/sponsor/1/website)
|
||||
|
||||
## Backers
|
||||
|
||||
Support this project by becoming a backer. Your avatar will show up here.
|
||||
|
||||
[![Backers](https://opencollective.com/doks/tiers/backer.svg?49741992)](https://opencollective.com/doks)
|
||||
|
7
SECURITY.md
Normal file
7
SECURITY.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Reporting Security Issues
|
||||
|
||||
The Doks team and community take security issues in Doks seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
|
||||
|
||||
To report a security issue, email [security@getdoks.org](mailto:security@getdoks.org) and include the word "SECURITY" in the subject line.
|
||||
|
||||
We'll endeavor to respond quickly, and will keep you updated throughout the process.
|
15
archetypes/blog.md
Normal file
15
archetypes/blog.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
description: ""
|
||||
excerpt: ""
|
||||
date: {{ .Date }}
|
||||
lastmod: {{ .Date }}
|
||||
draft: true
|
||||
weight: 50
|
||||
images: []
|
||||
categories: []
|
||||
tags: []
|
||||
contributors: []
|
||||
pinned: false
|
||||
homepage: false
|
||||
---
|
8
archetypes/default.md
Normal file
8
archetypes/default.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
description: ""
|
||||
date: {{ .Date }}
|
||||
lastmod: {{ .Date }}
|
||||
draft: true
|
||||
images: []
|
||||
---
|
15
archetypes/docs.md
Normal file
15
archetypes/docs.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: {{ .Date }}
|
||||
lastmod: {{ .Date }}
|
||||
draft: true
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: ""
|
||||
identifier: "{{ .Name }}-{{ delimit (shuffle (split (md5 .Name) "" )) "" }}"
|
||||
weight: 999
|
||||
toc: true
|
||||
---
|
10
archetypes/docs/_index.md
Normal file
10
archetypes/docs/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Docs"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-25T14:40:56+01:00
|
||||
lastmod: 2022-01-25T14:40:56+01:00
|
||||
draft: false
|
||||
images: []
|
||||
type: docs
|
||||
---
|
10
archetypes/docs/lorem/_index.md
Normal file
10
archetypes/docs/lorem/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Lorem"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-25T14:41:21+01:00
|
||||
lastmod: 2022-01-25T14:41:21+01:00
|
||||
draft: false
|
||||
images: []
|
||||
type: docs
|
||||
---
|
16
archetypes/docs/lorem/ipsum/index.md
Normal file
16
archetypes/docs/lorem/ipsum/index.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
title: "Ipsum"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-25T14:41:39+01:00
|
||||
lastmod: 2022-01-25T14:41:39+01:00
|
||||
draft: false
|
||||
images: []
|
||||
type: docs
|
||||
menu:
|
||||
{{ .Section }}:
|
||||
parent: "lorem"
|
||||
identifier: "{{ .Name }}-{{ delimit (shuffle (split (md5 .Name) "" )) "" }}"
|
||||
weight: 100
|
||||
toc: true
|
||||
---
|
0
assets/fonts/.gitkeep
Normal file
0
assets/fonts/.gitkeep
Normal file
BIN
assets/images/default-image.png
Normal file
BIN
assets/images/default-image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
5
assets/js/alert-init.js
Normal file
5
assets/js/alert-init.js
Normal file
@ -0,0 +1,5 @@
|
||||
Object.keys(localStorage).forEach(function(key) {
|
||||
if (/^global-alert-/.test(key)) {
|
||||
document.documentElement.setAttribute('data-global-alert', 'closed');
|
||||
}
|
||||
});
|
20
assets/js/alert.js
Normal file
20
assets/js/alert.js
Normal file
@ -0,0 +1,20 @@
|
||||
var announcement = document.getElementById('announcement');
|
||||
|
||||
if (announcement !== null) {
|
||||
|
||||
var id = announcement.dataset.id;
|
||||
|
||||
Object.keys(localStorage).forEach(function(key) {
|
||||
if (/^global-alert-/.test(key)) {
|
||||
if (key !== id ) {
|
||||
localStorage.removeItem(key);
|
||||
document.documentElement.removeAttribute('data-global-alert');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
announcement.addEventListener('closed.bs.alert', () => {
|
||||
localStorage.setItem(id, 'closed');
|
||||
});
|
||||
|
||||
}
|
0
assets/js/app.js
Normal file
0
assets/js/app.js
Normal file
2
assets/js/bootstrap.js
vendored
Normal file
2
assets/js/bootstrap.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import 'bootstrap/dist/js/bootstrap.bundle.min.js'
|
||||
// import 'bootstrap/dist/js/bootstrap.min.js'
|
37
assets/js/clipboard.js
Normal file
37
assets/js/clipboard.js
Normal file
@ -0,0 +1,37 @@
|
||||
import Clipboard from 'clipboard';
|
||||
|
||||
var pre = document.getElementsByTagName('pre');
|
||||
|
||||
for (var i = 0; i < pre.length; ++ i)
|
||||
{
|
||||
var element = pre[i];
|
||||
var mermaid = element.getElementsByClassName('language-mermaid')[0];
|
||||
|
||||
if (mermaid == null) {
|
||||
element.insertAdjacentHTML('afterbegin', '<button class="btn btn-copy"></button>');
|
||||
}
|
||||
}
|
||||
|
||||
var clipboard = new Clipboard('.btn-copy', {
|
||||
|
||||
target: function(trigger) {
|
||||
return trigger.nextElementSibling;
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
clipboard.on('success', function(e) {
|
||||
|
||||
/*
|
||||
console.info('Action:', e.action);
|
||||
console.info('Text:', e.text);
|
||||
console.info('Trigger:', e.trigger);
|
||||
*/
|
||||
|
||||
e.clearSelection();
|
||||
});
|
||||
|
||||
clipboard.on('error', function(e) {
|
||||
console.error('Action:', e.action);
|
||||
console.error('Trigger:', e.trigger);
|
||||
});
|
21
assets/js/darkmode-init.js
Normal file
21
assets/js/darkmode-init.js
Normal file
@ -0,0 +1,21 @@
|
||||
const globalDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const localMode = localStorage.getItem('theme');
|
||||
|
||||
if (globalDark && (localMode === null)) {
|
||||
|
||||
localStorage.setItem('theme', 'dark');
|
||||
document.documentElement.setAttribute('data-dark-mode', '');
|
||||
|
||||
}
|
||||
|
||||
if (globalDark && (localMode === 'dark')) {
|
||||
|
||||
document.documentElement.setAttribute('data-dark-mode', '');
|
||||
|
||||
}
|
||||
|
||||
if (localMode === 'dark') {
|
||||
|
||||
document.documentElement.setAttribute('data-dark-mode', '');
|
||||
|
||||
}
|
38
assets/js/darkmode.js
Normal file
38
assets/js/darkmode.js
Normal file
@ -0,0 +1,38 @@
|
||||
const mode = document.getElementById('mode');
|
||||
|
||||
if (mode !== null) {
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
|
||||
|
||||
if (event.matches) {
|
||||
|
||||
localStorage.setItem('theme', 'dark');
|
||||
document.documentElement.setAttribute('data-dark-mode', '');
|
||||
|
||||
} else {
|
||||
|
||||
localStorage.setItem('theme', 'light');
|
||||
document.documentElement.removeAttribute('data-dark-mode');
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
mode.addEventListener('click', () => {
|
||||
|
||||
document.documentElement.toggleAttribute('data-dark-mode');
|
||||
localStorage.setItem('theme', document.documentElement.hasAttribute('data-dark-mode') ? 'dark' : 'light');
|
||||
|
||||
});
|
||||
|
||||
if (localStorage.getItem('theme') === 'dark') {
|
||||
|
||||
document.documentElement.setAttribute('data-dark-mode', '');
|
||||
|
||||
} else {
|
||||
|
||||
document.documentElement.removeAttribute('data-dark-mode');
|
||||
|
||||
}
|
||||
|
||||
}
|
26
assets/js/highlight.js
Normal file
26
assets/js/highlight.js
Normal file
@ -0,0 +1,26 @@
|
||||
import hljs from 'highlight.js/lib/core';
|
||||
|
||||
import javascript from 'highlight.js/lib/languages/javascript';
|
||||
import json from 'highlight.js/lib/languages/json';
|
||||
import bash from 'highlight.js/lib/languages/bash';
|
||||
import xml from 'highlight.js/lib/languages/xml';
|
||||
import ini from 'highlight.js/lib/languages/ini';
|
||||
import yaml from 'highlight.js/lib/languages/yaml';
|
||||
import markdown from 'highlight.js/lib/languages/markdown';
|
||||
import python from 'highlight.js/lib/languages/python';
|
||||
|
||||
hljs.registerLanguage('javascript', javascript);
|
||||
hljs.registerLanguage('json', json);
|
||||
hljs.registerLanguage('bash', bash);
|
||||
hljs.registerLanguage('html', xml);
|
||||
hljs.registerLanguage('ini', ini);
|
||||
hljs.registerLanguage('toml', ini);
|
||||
hljs.registerLanguage('yaml', yaml);
|
||||
hljs.registerLanguage('md', markdown);
|
||||
hljs.registerLanguage('python', python);
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
document.querySelectorAll('pre code:not(.language-mermaid)').forEach((block) => {
|
||||
hljs.highlightElement(block);
|
||||
});
|
||||
});
|
179
assets/js/index.js
Normal file
179
assets/js/index.js
Normal file
@ -0,0 +1,179 @@
|
||||
var suggestions = document.getElementById('suggestions');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
if (search !== null) {
|
||||
document.addEventListener('keydown', inputFocus);
|
||||
}
|
||||
|
||||
function inputFocus(e) {
|
||||
if (e.ctrlKey && e.key === '/' ) {
|
||||
e.preventDefault();
|
||||
search.focus();
|
||||
}
|
||||
if (e.key === 'Escape' ) {
|
||||
search.blur();
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', function(event) {
|
||||
|
||||
var isClickInsideElement = suggestions.contains(event.target);
|
||||
|
||||
if (!isClickInsideElement) {
|
||||
suggestions.classList.add('d-none');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
|
||||
*/
|
||||
|
||||
document.addEventListener('keydown',suggestionFocus);
|
||||
|
||||
function suggestionFocus(e) {
|
||||
const suggestionsHidden = suggestions.classList.contains('d-none');
|
||||
if (suggestionsHidden) return;
|
||||
|
||||
const focusableSuggestions= [...suggestions.querySelectorAll('a')];
|
||||
if (focusableSuggestions.length === 0) return;
|
||||
|
||||
const index = focusableSuggestions.indexOf(document.activeElement);
|
||||
|
||||
if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
const nextIndex = index > 0 ? index - 1 : 0;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
else if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index;
|
||||
focusableSuggestions[nextIndex].focus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Source:
|
||||
- https://github.com/nextapps-de/flexsearch#index-documents-field-search
|
||||
- https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var index = new FlexSearch.Document({
|
||||
tokenize: "forward",
|
||||
cache: 100,
|
||||
document: {
|
||||
id: 'id',
|
||||
store: [
|
||||
"href", "title", "description"
|
||||
],
|
||||
index: ["title", "description", "content"]
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Not yet supported: https://github.com/nextapps-de/flexsearch#complex-documents
|
||||
|
||||
/*
|
||||
var docs = [
|
||||
{{ range $index, $page := (where .Site.Pages "Section" "docs") -}}
|
||||
{
|
||||
id: {{ $index }},
|
||||
href: "{{ .Permalink }}",
|
||||
title: {{ .Title | jsonify }},
|
||||
description: {{ .Params.description | jsonify }},
|
||||
content: {{ .Content | jsonify }}
|
||||
},
|
||||
{{ end -}}
|
||||
];
|
||||
*/
|
||||
|
||||
// https://discourse.gohugo.io/t/range-length-or-last-element/3803/2
|
||||
|
||||
{{ $list := slice }}
|
||||
{{- if and (isset .Site.Params.options "searchsectionsindex") (not (eq (len .Site.Params.options.searchSectionsIndex) 0)) }}
|
||||
{{- if eq .Site.Params.options.searchSectionsIndex "ALL" }}
|
||||
{{- $list = .Site.Pages }}
|
||||
{{- else }}
|
||||
{{- $list = (where .Site.Pages "Type" "in" .Site.Params.options.searchSectionsIndex) }}
|
||||
{{- if (in .Site.Params.options.searchSectionsIndex "HomePage") }}
|
||||
{{ $list = $list | append .Site.Home }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- $list = (where .Site.Pages "Section" "docs") }}
|
||||
{{- end }}
|
||||
|
||||
{{ $len := (len $list) -}}
|
||||
|
||||
{{ range $index, $element := $list -}}
|
||||
index.add(
|
||||
{
|
||||
id: {{ $index }},
|
||||
href: "{{ .RelPermalink }}",
|
||||
title: {{ .Title | jsonify }},
|
||||
{{ with .Description -}}
|
||||
description: {{ . | jsonify }},
|
||||
{{ else -}}
|
||||
description: {{ .Summary | plainify | jsonify }},
|
||||
{{ end -}}
|
||||
content: {{ .Plain | jsonify }}
|
||||
}
|
||||
);
|
||||
{{ end -}}
|
||||
|
||||
search.addEventListener('input', show_results, true);
|
||||
|
||||
function show_results(){
|
||||
const maxResult = 5;
|
||||
var searchQuery = this.value;
|
||||
var results = index.search(searchQuery, {limit: maxResult, enrich: true});
|
||||
|
||||
// flatten results since index.search() returns results for each indexed field
|
||||
const flatResults = new Map(); // keyed by href to dedupe results
|
||||
for (const result of results.flatMap(r => r.result)) {
|
||||
if (flatResults.has(result.doc.href)) continue;
|
||||
flatResults.set(result.doc.href, result.doc);
|
||||
}
|
||||
|
||||
suggestions.innerHTML = "";
|
||||
suggestions.classList.remove('d-none');
|
||||
|
||||
// inform user that no results were found
|
||||
if (flatResults.size === 0 && searchQuery) {
|
||||
const noResultsMessage = document.createElement('div')
|
||||
noResultsMessage.innerHTML = `No results for "<strong>${searchQuery}</strong>"`
|
||||
noResultsMessage.classList.add("suggestion__no-results");
|
||||
suggestions.appendChild(noResultsMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
// construct a list of suggestions
|
||||
for(const [href, doc] of flatResults) {
|
||||
const entry = document.createElement('div');
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
const a = document.createElement('a');
|
||||
a.href = href;
|
||||
entry.appendChild(a);
|
||||
|
||||
const title = document.createElement('span');
|
||||
title.textContent = doc.title;
|
||||
title.classList.add("suggestion__title");
|
||||
a.appendChild(title);
|
||||
|
||||
const description = document.createElement('span');
|
||||
description.textContent = doc.description;
|
||||
description.classList.add("suggestion__description");
|
||||
a.appendChild(description);
|
||||
|
||||
suggestions.appendChild(entry);
|
||||
|
||||
if(suggestions.childElementCount == maxResult) break;
|
||||
}
|
||||
}
|
||||
}());
|
1
assets/js/instant.page.js
Normal file
1
assets/js/instant.page.js
Normal file
@ -0,0 +1 @@
|
||||
import 'instant.page';
|
10
assets/js/katex.js
Normal file
10
assets/js/katex.js
Normal file
@ -0,0 +1,10 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: '$$', right: '$$', display: true},
|
||||
{left: '$', right: '$', display: false},
|
||||
{left: '\\(', right: '\\)', display: false},
|
||||
{left: '\\[', right: '\\]', display: true},
|
||||
],
|
||||
});
|
||||
});
|
1
assets/js/lazysizes.js
Normal file
1
assets/js/lazysizes.js
Normal file
@ -0,0 +1 @@
|
||||
import 'lazysizes';
|
11
assets/js/mermaid.js
Normal file
11
assets/js/mermaid.js
Normal file
@ -0,0 +1,11 @@
|
||||
import mermaid from 'mermaid';
|
||||
|
||||
var config = {
|
||||
theme: 'default',
|
||||
fontFamily: '"Jost", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";',
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
mermaid.initialize(config);
|
||||
mermaid.init(undefined, '.language-mermaid');
|
||||
});
|
14
assets/js/scroll-lock.js
Normal file
14
assets/js/scroll-lock.js
Normal file
@ -0,0 +1,14 @@
|
||||
// Adds scroll position lock for default docs sidebar
|
||||
|
||||
if (document.querySelector('#sidebar-default') !== null) {
|
||||
let sidebar = document.getElementById('sidebar-default');
|
||||
|
||||
let pos = sessionStorage.getItem('sidebar-scroll');
|
||||
if (pos !== null) {
|
||||
sidebar.scrollTop = parseInt(pos, 10);
|
||||
}
|
||||
|
||||
window.addEventListener('beforeunload', () => {
|
||||
sessionStorage.setItem('sidebar-scroll', sidebar.scrollTop);
|
||||
});
|
||||
}
|
20
assets/js/to-top.js
Normal file
20
assets/js/to-top.js
Normal file
@ -0,0 +1,20 @@
|
||||
var topbutton = document.getElementById('toTop');
|
||||
|
||||
if (topbutton !== null) {
|
||||
|
||||
topbutton.style.display = 'none';
|
||||
window.onscroll = function() {
|
||||
scrollFunction()
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
function scrollFunction() {
|
||||
|
||||
if (document.body.scrollTop > 40 || document.documentElement.scrollTop > 40) {
|
||||
topbutton.style.display = 'block';
|
||||
} else {
|
||||
topbutton.style.display = 'none';
|
||||
}
|
||||
|
||||
}
|
0
assets/js/vendor/.gitkeep
vendored
Normal file
0
assets/js/vendor/.gitkeep
vendored
Normal file
35
assets/scss/app.scss
Normal file
35
assets/scss/app.scss
Normal file
@ -0,0 +1,35 @@
|
||||
/** Import Bootstrap functions */
|
||||
@import "bootstrap/scss/functions";
|
||||
|
||||
/** Import theme variables */
|
||||
@import "common/variables";
|
||||
|
||||
/** Import Bootstrap */
|
||||
@import "bootstrap/scss/bootstrap";
|
||||
|
||||
/** Import highlight.js */
|
||||
// @import "highlight.js/scss/github-dark-dimmed";
|
||||
|
||||
/** Import KaTeX */
|
||||
@import "katex/dist/katex";
|
||||
|
||||
/** Import theme styles */
|
||||
@import "common/fonts";
|
||||
@import "common/global";
|
||||
@import "common/dark";
|
||||
@import "components/alerts";
|
||||
@import "components/buttons";
|
||||
@import "components/code";
|
||||
@import "components/details";
|
||||
@import "components/syntax";
|
||||
@import "components/comments";
|
||||
@import "components/forms";
|
||||
@import "components/images";
|
||||
@import "components/mermaid";
|
||||
@import "components/search";
|
||||
@import "components/tables";
|
||||
@import "layouts/footer";
|
||||
@import "layouts/header";
|
||||
@import "layouts/pages";
|
||||
@import "layouts/posts";
|
||||
@import "layouts/sidebar";
|
582
assets/scss/common/_dark.scss
Normal file
582
assets/scss/common/_dark.scss
Normal file
@ -0,0 +1,582 @@
|
||||
/** Theme variables */
|
||||
|
||||
// Source: https://material.io/design/color/dark-theme.html
|
||||
|
||||
$body-bg-dark: $gray-900;
|
||||
$body-overlay-dark: darken($body-bg-dark, 2.5%);
|
||||
|
||||
/*
|
||||
$border-dark: darken($body-bg-dark, 2.5%);
|
||||
*/
|
||||
$border-dark: $gray-800;
|
||||
$body-color-dark: $gray-300;
|
||||
$dots-dark: darken($body-color-dark, 50%);
|
||||
|
||||
$link-color-dark: $blue-300;
|
||||
$button-color-dark: $link-color-dark;
|
||||
$focus-color-dark: lighten($link-color-dark, 2.5%);
|
||||
|
||||
$navbar-dark-color: $body-color-dark;
|
||||
$navbar-dark-hover-color: $link-color-dark;
|
||||
$navbar-dark-active-color: $link-color-dark;
|
||||
|
||||
/** Theme styles */
|
||||
|
||||
[data-dark-mode] body {
|
||||
background: $body-bg-dark;
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body a {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body a.text-body {
|
||||
color: $body-color-dark !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-primary {
|
||||
@include button-variant($button-color-dark, $button-color-dark);
|
||||
|
||||
color: $body-bg-dark !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-outline-primary {
|
||||
@include button-outline-variant($button-color-dark, $button-color-dark);
|
||||
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-outline-primary:hover {
|
||||
color: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-doks-light {
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .show > .btn-doks-light,
|
||||
[data-dark-mode] body .btn-doks-light:hover,
|
||||
[data-dark-mode] body .btn-doks-light:active {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-menu svg {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .doks-sidebar-toggle {
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-menu:hover,
|
||||
[data-dark-mode] body .btn-doks-light:hover,
|
||||
[data-dark-mode] body .doks-sidebar-toggle:hover {
|
||||
background: $body-overlay-dark;
|
||||
}
|
||||
|
||||
/*
|
||||
[data-dark-mode] body .dropdown-menu {
|
||||
@extend .dropdown-menu-dark;
|
||||
}
|
||||
*/
|
||||
|
||||
[data-dark-mode] body .navbar,
|
||||
[data-dark-mode] body .doks-subnavbar {
|
||||
background-color: rgba(33, 37, 41, 0.95);
|
||||
border-bottom: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body.home .navbar {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .offcanvas-header {
|
||||
border-bottom: 1px solid $gray-800;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .offcanvas .nav-link {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .offcanvas .nav-link:hover,
|
||||
[data-dark-mode] body .offcanvas .nav-link:focus {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .offcanvas .nav-link.active {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-brand {
|
||||
color: $navbar-dark-color !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link {
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link:hover,
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link:focus {
|
||||
color: $navbar-dark-hover-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link.disabled {
|
||||
color: $navbar-dark-disabled-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .show > .nav-link,
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .active > .nav-link,
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link.show,
|
||||
[data-dark-mode] body .navbar-light .navbar-nav .nav-link.active {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-text {
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .alert-primary a {
|
||||
color: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .alert-doks {
|
||||
background: $body-overlay-dark;
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .alert-doks a {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .page-links a {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle-nav a {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .showcase-meta a {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .showcase-meta a:hover,
|
||||
[data-dark-mode] body .showcase-meta a:focus {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-link:hover,
|
||||
[data-dark-mode] body .docs-link.active,
|
||||
[data-dark-mode] body .page-links a:hover {
|
||||
text-decoration: none;
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle {
|
||||
color: $body-color-dark;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle:hover,
|
||||
[data-dark-mode] body .btn-toggle:focus {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle::before {
|
||||
width: 1.25em;
|
||||
line-height: 0;
|
||||
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
||||
transition: transform 0.35s ease;
|
||||
transform-origin: 0.5em 50%;
|
||||
margin-bottom: 0.125rem;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle[aria-expanded="true"] {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle[aria-expanded="true"]::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle-nav a:hover,
|
||||
[data-dark-mode] body .btn-toggle-nav a:focus {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-toggle-nav a.active {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-text a {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links h3.sidebar-link a,
|
||||
[data-dark-mode] body .page-links h3.sidebar-link a {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar-light .navbar-text a:hover,
|
||||
[data-dark-mode] body .navbar-light .navbar-text a:focus {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar .btn-link {
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .content .btn-link {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .content .btn-link:hover {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .content img[src^="https://latex.codecogs.com/svg.latex"] {
|
||||
filter: invert(1);
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar .btn-link:hover {
|
||||
color: $navbar-dark-hover-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar .btn-link:active {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .form-control.is-search {
|
||||
background: $body-overlay-dark;
|
||||
border: 1px solid transparent;
|
||||
color: $gray-300;
|
||||
|
||||
/*
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right calc(0.375em + 0.1875rem) center;
|
||||
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
||||
*/
|
||||
}
|
||||
|
||||
[data-dark-mode] body .form-control.is-search:focus {
|
||||
border: 1px solid $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .doks-search::after {
|
||||
color: $gray-300;
|
||||
border: 1px solid $gray-700;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .text-dark {
|
||||
color: $body-color-dark !important;
|
||||
}
|
||||
|
||||
/*
|
||||
[data-dark-mode] body .navbar-form::after {
|
||||
color: $gray-600;
|
||||
border: 1px solid $gray-800;
|
||||
}
|
||||
*/
|
||||
|
||||
[data-dark-mode] body .form-control {
|
||||
color: $gray-300;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .form-control::placeholder {
|
||||
color: $gray-400;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .border-top {
|
||||
border-top: 1px solid $border-dark !important;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
[data-dark-mode] body .docs-sidebar {
|
||||
order: 0;
|
||||
border-right: 1px solid $border-dark;
|
||||
}
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-navigation {
|
||||
border-top: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body pre code::-webkit-scrollbar-thumb {
|
||||
background: $gray-400;
|
||||
}
|
||||
|
||||
[data-dark-mode] body code:not(.hljs) {
|
||||
background: $body-overlay-dark;
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body pre code:hover {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $border-dark transparent;
|
||||
}
|
||||
|
||||
[data-dark-mode] body pre code::-webkit-scrollbar-thumb:hover {
|
||||
background: $gray-500;
|
||||
}
|
||||
|
||||
[data-dark-mode] body blockquote {
|
||||
border-left: 3px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .footer {
|
||||
border-top: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links,
|
||||
[data-dark-mode] body .docs-toc {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $body-bg-dark $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links::-webkit-scrollbar,
|
||||
[data-dark-mode] body .docs-toc::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links::-webkit-scrollbar-track,
|
||||
[data-dark-mode] body .docs-toc::-webkit-scrollbar-track {
|
||||
background: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb,
|
||||
[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb {
|
||||
background: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links:hover,
|
||||
[data-dark-mode] body .docs-toc:hover {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $border-dark $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links:hover::-webkit-scrollbar-thumb,
|
||||
[data-dark-mode] body .docs-toc:hover::-webkit-scrollbar-thumb {
|
||||
background: $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links::-webkit-scrollbar-thumb:hover,
|
||||
[data-dark-mode] body .docs-toc::-webkit-scrollbar-thumb:hover {
|
||||
background: $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .docs-links h3:not(:first-child) {
|
||||
border-top: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body a.docs-link {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .page-links li:not(:first-child) {
|
||||
border-top: 1px dashed $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .card {
|
||||
background: $body-bg-dark;
|
||||
border: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .card.bg-light {
|
||||
background: $body-overlay-dark !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar .menu-icon .navicon {
|
||||
background: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .navbar .menu-icon .navicon::before,
|
||||
[data-dark-mode] body .navbar .menu-icon .navicon::after {
|
||||
background: $navbar-dark-color;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .logo-light {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .logo-dark {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .bg-light {
|
||||
background: darken($body-bg-dark, 1.5%) !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .bg-dots {
|
||||
background-image: radial-gradient($dots-dark 15%, transparent 15%);
|
||||
}
|
||||
|
||||
[data-dark-mode] body .text-muted {
|
||||
color: darken($body-color-dark, 7.5%) !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .alert-primary {
|
||||
background: $link-color-dark;
|
||||
color: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .figure-caption {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body table {
|
||||
@extend .table-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .copy-status::after {
|
||||
content: "Copy";
|
||||
display: block;
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .copy-status:hover::after {
|
||||
content: "Copy";
|
||||
display: block;
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .copy-status:focus::after,
|
||||
[data-dark-mode] body .copy-status:active::after {
|
||||
content: "Copied";
|
||||
display: block;
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
/*
|
||||
[data-dark-mode] body .dropdown-toggle:focus,
|
||||
[data-dark-mode] body .doks-sidebar-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem $focus-color-dark;
|
||||
}
|
||||
*/
|
||||
|
||||
[data-dark-mode] body .offcanvas {
|
||||
background-color: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .btn-close {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNkZWUyZTYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXgiPjxsaW5lIHgxPSIxOCIgeTE9IjYiIHgyPSI2IiB5Mj0iMTgiPjwvbGluZT48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSIxOCIgeTI9IjE4Ij48L2xpbmU+PC9zdmc+");
|
||||
background-size: 1.5rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
[data-dark-mode] body .alert-dismissible .btn-close {
|
||||
background-size: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
[data-dark-mode] body .btn-close:focus {
|
||||
box-shadow: 0 0 0 0.2rem $focus-color-dark;
|
||||
}
|
||||
*/
|
||||
|
||||
[data-dark-mode] .dropdown-item {
|
||||
color: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body hr.text-black-50 {
|
||||
color: $gray-600 !important;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .email-form .form-control {
|
||||
background: $body-overlay-dark;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .email-form .form-control:focus {
|
||||
border: 1px solid $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .page-link {
|
||||
color: $link-color-dark;
|
||||
background-color: transparent;
|
||||
border: $pagination-border-width solid $border-dark;
|
||||
|
||||
&:hover {
|
||||
color: $body-bg-dark;
|
||||
background-color: $body-color-dark;
|
||||
border-color: $body-color-dark;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
color: $body-bg-dark;
|
||||
background-color: $body-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
[data-dark-mode] .page-item {
|
||||
&.active .page-link {
|
||||
color: $body-bg-dark;
|
||||
|
||||
@include gradient-bg($link-color-dark);
|
||||
|
||||
border-color: $link-color-dark;
|
||||
}
|
||||
|
||||
&.disabled .page-link {
|
||||
color: $pagination-disabled-color;
|
||||
background-color: $body-overlay-dark;
|
||||
border-color: $border-dark;
|
||||
}
|
||||
}
|
||||
|
||||
[data-dark-mode] .dropdown-menu {
|
||||
background: $body-overlay-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .dropdown-menu .dropdown-item {
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .dropdown-menu .dropdown-item:hover {
|
||||
color: $link-color-dark;
|
||||
background: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .dropdown-menu .dropdown-item.active,
|
||||
[data-dark-mode] .dropdown-menu .dropdown-item:focus {
|
||||
color: $link-color-dark;
|
||||
background: $body-bg-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .doks-navbar .dropdown-item.current,
|
||||
[data-dark-mode] .doks-subnavbar .dropdown-item.current {
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23dee2e6' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 1rem top 0.6rem;
|
||||
background-size: 0.75rem 0.75rem;
|
||||
}
|
||||
|
||||
[data-dark-mode] details {
|
||||
border: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] summary:hover {
|
||||
background: $body-overlay-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] details[open] > summary {
|
||||
border-bottom: 1px solid $border-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] details summary::before {
|
||||
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28222, 226, 230, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
[data-dark-mode] #toc a.active {
|
||||
color: $link-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] .btn-light {
|
||||
color: $link-color-dark;
|
||||
background: $body-overlay-dark;
|
||||
border: 1px solid $body-overlay-dark;
|
||||
}
|
101
assets/scss/common/_fonts.scss
Normal file
101
assets/scss/common/_fonts.scss
Normal file
@ -0,0 +1,101 @@
|
||||
/* jost-regular - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Regular Regular"), // Full Name
|
||||
local("Jost-Regular"), // PostScript name
|
||||
// indestructible Jost*
|
||||
local("Jost* Book"),
|
||||
local("Jost-Book"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-regular.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-regular.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* jost-500 - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Regular Medium"),
|
||||
local("JostRoman-Medium"),
|
||||
// indestructible Jost*
|
||||
local("Jost* Medium"),
|
||||
local("Jost-Medium"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-500.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-500.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* jost-700 - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Regular Bold"),
|
||||
local("JostRoman-Bold"),
|
||||
// indestructible Jost*
|
||||
local("Jost* Bold"),
|
||||
local("Jost-Bold"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-700.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-700.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* jost-italic - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Italic Italic"),
|
||||
local("Jost-Italic"),
|
||||
// indestructible Jost*
|
||||
local("Jost* BookItalic"),
|
||||
local("Jost-BookItalic"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-italic.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* jost-500italic - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Italic Medium Italic"),
|
||||
local("JostItalic-Medium"),
|
||||
// indestructible Jost*
|
||||
local("Jost* Medium Italic"),
|
||||
local("Jost-MediumItalic"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-500italic.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-500italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
|
||||
/* jost-700italic - latin */
|
||||
@font-face {
|
||||
font-family: Jost;
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src:
|
||||
// Google Fonts Jost
|
||||
local("Jost Italic Bold Italic"),
|
||||
local("JostItalic-Bold"),
|
||||
// indestructible Jost*
|
||||
local("Jost* Bold Italic"),
|
||||
local("Jost-BoldItalic"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-700italic.woff2") format("woff2"),
|
||||
url("fonts/vendor/jost/jost-v4-latin-700italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
288
assets/scss/common/_global.scss
Normal file
288
assets/scss/common/_global.scss
Normal file
@ -0,0 +1,288 @@
|
||||
.contributors .content,
|
||||
.blog .content,
|
||||
.page .content,
|
||||
.error404 .content,
|
||||
.docs.list .content,
|
||||
.tutorial.list .content,
|
||||
.showcase.list .content,
|
||||
.categories.list .content,
|
||||
.tags.list .content {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
|
||||
.content img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
.h1,
|
||||
.h2,
|
||||
.h3,
|
||||
.h4,
|
||||
.h5,
|
||||
.h6 {
|
||||
margin: 2rem 0 1rem;
|
||||
}
|
||||
|
||||
.offcanvas-header {
|
||||
border-bottom: 1px solid $gray-300;
|
||||
padding-top: 1.0625rem;
|
||||
padding-bottom: 0.8125rem;
|
||||
}
|
||||
|
||||
h5.offcanvas-title {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body.docs {
|
||||
padding-top: 0 !important;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
body {
|
||||
font-size: $font-size-md;
|
||||
|
||||
/*
|
||||
padding-top: 4rem !important;
|
||||
*/
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
.h1,
|
||||
.h2,
|
||||
.h3,
|
||||
.h4,
|
||||
.h5,
|
||||
.h6 {
|
||||
margin-bottom: 1.125rem;
|
||||
}
|
||||
}
|
||||
|
||||
.home h1 {
|
||||
/* font-size: calc(1.375rem + 1.5vw); */
|
||||
font-size: calc(1.875rem + 1.5vw);
|
||||
}
|
||||
|
||||
a:hover,
|
||||
a:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.btn:hover,
|
||||
a.btn:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.section {
|
||||
padding-top: 5rem;
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
|
||||
.section-md {
|
||||
padding-top: 3rem;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
|
||||
.section-sm {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
/*
|
||||
.section svg {
|
||||
display: inline-block;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
vertical-align: text-top;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
body {
|
||||
padding-top: 3.5625rem;
|
||||
}
|
||||
*/
|
||||
|
||||
.docs-sidebar {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.docs-sidebar {
|
||||
order: 0;
|
||||
border-right: 1px solid $gray-200;
|
||||
}
|
||||
|
||||
@supports ((position:-webkit-sticky) or (position:sticky)) {
|
||||
.docs-sidebar {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 4rem;
|
||||
z-index: 1000;
|
||||
height: calc(100vh - 4rem);
|
||||
}
|
||||
|
||||
.docs-sidebar-top {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.docs-sidebar {
|
||||
flex: 0 1 320px;
|
||||
}
|
||||
}
|
||||
|
||||
.docs-links {
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
@supports ((position: -webkit-sticky) or (position: sticky)) {
|
||||
.docs-links {
|
||||
max-height: calc(100vh - 4rem);
|
||||
overflow-y: scroll;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.docs-links {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-right: -1.5rem;
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.docs-toc {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
@supports ((position:-webkit-sticky) or (position:sticky)) {
|
||||
.docs-toc {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 4rem;
|
||||
height: calc(100vh - 4rem);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.docs-toc-top {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.docs-content {
|
||||
padding-bottom: 3rem;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.docs-navigation {
|
||||
border-top: 1px solid $gray-200;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 0;
|
||||
padding-top: 2rem;
|
||||
}
|
||||
|
||||
.docs-navigation a {
|
||||
font-size: $font-size-base * 0.9;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.docs-navigation {
|
||||
margin-bottom: -1rem;
|
||||
}
|
||||
|
||||
.docs-navigation a {
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar a:hover,
|
||||
.navbar a:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#TableOfContents ul,
|
||||
#toc ul {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#toc a.active {
|
||||
color: $primary;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: rgba(212, 53, 159, 0.2);
|
||||
}
|
||||
|
||||
.bg-dots {
|
||||
background-image: radial-gradient($gray-300 15%, transparent 15%);
|
||||
background-position: 0 0;
|
||||
background-size: 1rem 1rem;
|
||||
-webkit-mask: linear-gradient(to top, #fff, transparent);
|
||||
mask: linear-gradient(to top, #fff, transparent);
|
||||
width: 100%;
|
||||
height: 9rem;
|
||||
margin-top: -10rem;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.bg-dots-md {
|
||||
margin-top: -11rem;
|
||||
}
|
||||
|
||||
.bg-dots-lg {
|
||||
margin-top: -12rem;
|
||||
}
|
||||
|
||||
// https://fossheim.io/writing/posts/css-text-gradient/
|
||||
.gradient-text {
|
||||
background-color: $primary;
|
||||
background-image: linear-gradient(90deg, $primary, $blue-300 50%, $pink-500);
|
||||
background-size: 100%;
|
||||
background-repeat: repeat;
|
||||
-webkit-background-clip: text;
|
||||
-moz-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
-moz-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
.katex {
|
||||
font-size: $font-size-md;
|
||||
}
|
||||
|
||||
.card-bar {
|
||||
border-top: 4px solid;
|
||||
border-image-source: linear-gradient(90deg, $primary, #8ed6fb 50%, #d32e9d);
|
||||
border-image-slice: 1;
|
||||
}
|
||||
|
||||
.modal-backdrop {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.modal-backdrop.show {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.modal-backdrop.show {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
190
assets/scss/common/_variables.scss
Normal file
190
assets/scss/common/_variables.scss
Normal file
@ -0,0 +1,190 @@
|
||||
// Color system
|
||||
|
||||
$white: #fff;
|
||||
$gray-100: #f8f9fa;
|
||||
$gray-200: #e9ecef;
|
||||
$gray-300: #dee2e6;
|
||||
$gray-400: #ced4da;
|
||||
$gray-500: #adb5bd;
|
||||
$gray-600: #6c757d;
|
||||
$gray-700: #495057;
|
||||
$gray-800: #343a40;
|
||||
$gray-900: #212529;
|
||||
$black: #000;
|
||||
|
||||
$yellow: #ffe000;
|
||||
$black: #1d2d35;
|
||||
$beige: #fbf7f0;
|
||||
|
||||
// $red: #e55235;
|
||||
$purple: #5d2f86;
|
||||
$brown: #aa9c84;
|
||||
|
||||
$blue-300: #8ed6fb;
|
||||
$pink-100: #fcfaff;
|
||||
$pink-500: #d32e9d;
|
||||
|
||||
$primary: $purple;
|
||||
|
||||
$color-btn-bg: $pink-500;
|
||||
$color-btn-border: darken($pink-500, 5%);
|
||||
$color-btn-text: $white;
|
||||
|
||||
// Options
|
||||
//
|
||||
// Quickly modify global styling by enabling or disabling optional features.
|
||||
|
||||
$enable-caret: true;
|
||||
$enable-rounded: true;
|
||||
$enable-shadows: false;
|
||||
$enable-gradients: false;
|
||||
$enable-transitions: true;
|
||||
$enable-reduced-motion: true;
|
||||
$enable-smooth-scroll: true;
|
||||
$enable-grid-classes: true;
|
||||
$enable-button-pointers: true;
|
||||
$enable-rfs: true;
|
||||
$enable-validation-icons: true;
|
||||
$enable-negative-margins: true;
|
||||
$enable-deprecation-messages: true;
|
||||
$enable-important-utilities: true;
|
||||
|
||||
/** Bootstrap navbar fix (https://git.io/fADqW) */
|
||||
$navbar-dark-toggler-icon-bg: none;
|
||||
$navbar-light-toggler-icon-bg: none;
|
||||
|
||||
// Options
|
||||
//
|
||||
// Quickly modify global styling by enabling or disabling optional features.
|
||||
|
||||
// $enable-responsive-font-sizes: true;
|
||||
|
||||
// Body
|
||||
//
|
||||
// Settings for the `<body>` element.
|
||||
|
||||
$body-bg: $white;
|
||||
$body-color: $black;
|
||||
|
||||
// Links
|
||||
//
|
||||
// Style anchor elements.
|
||||
|
||||
$link-color: $primary;
|
||||
$link-decoration: none;
|
||||
|
||||
// Grid containers
|
||||
//
|
||||
// Define the maximum width of `.container` for different screen sizes.
|
||||
|
||||
$container-max-widths: (
|
||||
sm: 540px,
|
||||
md: 720px,
|
||||
lg: 960px,
|
||||
xl: 1240px,
|
||||
xxl: 1320px
|
||||
);
|
||||
|
||||
@include _assert-ascending($container-max-widths, "$container-max-widths");
|
||||
|
||||
// Grid columns
|
||||
//
|
||||
// Set the number of columns and specify the width of the gutters.
|
||||
|
||||
$grid-columns: 16;
|
||||
$grid-gutter-width: 48px;
|
||||
$grid-row-columns: 6;
|
||||
|
||||
// Components
|
||||
//
|
||||
// Define common padding and border radius sizes and more.
|
||||
|
||||
$border-color: $gray-200;
|
||||
|
||||
// Typography
|
||||
//
|
||||
// Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
// stylelint-disable value-keyword-case
|
||||
$font-family-sans-serif: "Jost", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
$font-family-monospace: sfmono-regular, menlo, monaco, consolas, "Liberation Mono", "Courier New", monospace;
|
||||
$font-family-base: $font-family-sans-serif;
|
||||
// stylelint-enable value-keyword-case
|
||||
|
||||
$font-size-base: 1rem; // Assumes the browser default, typically `16px`
|
||||
$font-size-xl: $font-size-base * 1.375;
|
||||
$font-size-lg: $font-size-base * 1.25;
|
||||
$font-size-md: $font-size-base * 1.125;
|
||||
$font-size-sm: $font-size-base * 0.875;
|
||||
|
||||
// $line-height-base: 1.5;
|
||||
|
||||
$headings-font-family: null;
|
||||
$headings-font-weight: 700;
|
||||
|
||||
$lead-font-weight: 400;
|
||||
|
||||
// Spacing
|
||||
//
|
||||
// Control the default styling of most Bootstrap elements by modifying these
|
||||
// variables. Mostly focused on spacing.
|
||||
// You can add more entries to the $spacers map, should you need more variation.
|
||||
|
||||
$spacer: 1rem;
|
||||
|
||||
// Navbar
|
||||
|
||||
$navbar-padding-y: $spacer / 2;
|
||||
$navbar-padding-x: null;
|
||||
|
||||
$navbar-nav-link-padding-x: 0.5rem;
|
||||
|
||||
$navbar-light-color: $black;
|
||||
$navbar-light-hover-color: $primary;
|
||||
$navbar-light-active-color: $primary;
|
||||
|
||||
// Cards
|
||||
|
||||
$card-border-color: $gray-200;
|
||||
|
||||
// Alerts
|
||||
//
|
||||
// Define alert colors, border radius, and padding.
|
||||
|
||||
$alert-padding-y: $spacer;
|
||||
$alert-padding-x: $spacer * 1.5;
|
||||
$alert-margin-bottom: 0;
|
||||
$alert-border-radius: 0;
|
||||
$alert-link-font-weight: $headings-font-weight;
|
||||
$alert-border-width: 0;
|
||||
|
||||
$alert-bg-scale: 0;
|
||||
$alert-border-scale: 0;
|
||||
$alert-color-scale: 0;
|
||||
|
||||
// docsearch
|
||||
$dropdown-config: (
|
||||
main-color: $purple,
|
||||
layout-type: normal,
|
||||
layout-width: normal,
|
||||
layout-alignment: align,
|
||||
background-color: $white,
|
||||
border-radius: 4,
|
||||
border-width: 1,
|
||||
border-color: $gray-200,
|
||||
box-shadow: none,
|
||||
branding-position: bottom,
|
||||
spacing: normal,
|
||||
include-desc: yes,
|
||||
background-category-header: $white,
|
||||
font-size: normal,
|
||||
header-color: $black,
|
||||
title-color: $black,
|
||||
subtitle-color: $black,
|
||||
text-color: $black,
|
||||
highlight-color: $purple,
|
||||
highlight-opacity: 0.1,
|
||||
highlight-type: underline
|
||||
);
|
||||
|
||||
$input-btn-focus-width: 0;
|
164
assets/scss/components/_alerts.scss
Normal file
164
assets/scss/components/_alerts.scss
Normal file
@ -0,0 +1,164 @@
|
||||
.alert {
|
||||
font-family: $font-family-monospace;
|
||||
font-size: $font-size-sm;
|
||||
}
|
||||
|
||||
.alert-icon {
|
||||
margin-right: 0.75rem;
|
||||
}
|
||||
|
||||
.docs main .alert {
|
||||
margin: 2rem -1.5rem;
|
||||
}
|
||||
|
||||
.alert .alert-link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.alert-doks {
|
||||
background: $beige;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
/*
|
||||
.alert-light {
|
||||
color: #215888;
|
||||
background: linear-gradient(-45deg, rgb(212, 245, 255), rgb(234, 250, 255), rgb(234, 250, 255), #d3f6ef);
|
||||
}
|
||||
|
||||
.alert-light .alert-link {
|
||||
color: #215888;
|
||||
}
|
||||
*/
|
||||
|
||||
.alert-white {
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
}
|
||||
|
||||
.alert-primary {
|
||||
color: $white;
|
||||
background-color: $primary;
|
||||
}
|
||||
|
||||
.alert a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.alert-primary .alert-link {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
/*
|
||||
.alert-primary {
|
||||
color: #084298;
|
||||
background-color: #cfe2ff;
|
||||
border-color: #b6d4fe;
|
||||
}
|
||||
|
||||
.alert-primary .alert-link {
|
||||
color: #06357a;
|
||||
}
|
||||
*/
|
||||
|
||||
.alert-secondary {
|
||||
color: #41464b;
|
||||
background-color: #e2e3e5;
|
||||
border-color: #d3d6d8;
|
||||
}
|
||||
|
||||
.alert-secondary .alert-link {
|
||||
color: #34383c;
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
color: #0f5132;
|
||||
background-color: #d1e7dd;
|
||||
border-color: #badbcc;
|
||||
}
|
||||
|
||||
.alert-success .alert-link {
|
||||
color: #0c4128;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
color: #055160;
|
||||
background-color: #cff4fc;
|
||||
border-color: #b6effb;
|
||||
}
|
||||
|
||||
.alert-info .alert-link {
|
||||
color: #04414d;
|
||||
}
|
||||
|
||||
.alert-warning {
|
||||
color: #664d03;
|
||||
background-color: #fff3cd;
|
||||
border-color: #ffecb5;
|
||||
}
|
||||
|
||||
.alert-warning .alert-link {
|
||||
color: #523e02;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
color: #842029;
|
||||
background-color: #f8d7da;
|
||||
border-color: #f5c2c7;
|
||||
}
|
||||
|
||||
.alert-danger .alert-link {
|
||||
color: #6a1a21;
|
||||
}
|
||||
|
||||
.alert-light {
|
||||
color: #636464;
|
||||
background-color: #fefefe;
|
||||
border-color: #fdfdfe;
|
||||
}
|
||||
|
||||
.alert-light .alert-link {
|
||||
color: #4f5050;
|
||||
}
|
||||
|
||||
.alert-dark {
|
||||
color: #141619;
|
||||
background-color: #d3d3d4;
|
||||
border-color: #bcbebf;
|
||||
}
|
||||
|
||||
.alert-dark .alert-link {
|
||||
color: #101214;
|
||||
}
|
||||
|
||||
.alert .alert-link:hover,
|
||||
.alert .alert-link:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.alert-dismissible .btn-close {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
right: 1rem;
|
||||
z-index: 2;
|
||||
padding: 0.5rem;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");
|
||||
background-size: 1.5rem;
|
||||
filter: invert(1) grayscale(100%) brightness(200%);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.alert-dismissible .btn-close {
|
||||
background-size: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
[data-global-alert="closed"] #announcement {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.alert code {
|
||||
background: darken($beige, 5%);
|
||||
color: $black;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
255
assets/scss/components/_buttons.scss
Normal file
255
assets/scss/components/_buttons.scss
Normal file
@ -0,0 +1,255 @@
|
||||
.navbar .btn-link {
|
||||
color: $navbar-light-color;
|
||||
padding: 0.4375rem 0;
|
||||
}
|
||||
|
||||
#mode {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.btn-link:focus {
|
||||
outline: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
margin-left: 1.25rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
#mode {
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
|
||||
.navbar .btn-link {
|
||||
padding: 0.5625em 0.25rem 0.5rem 0.125rem;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar .btn-link:hover {
|
||||
color: $navbar-light-hover-color;
|
||||
}
|
||||
|
||||
.navbar .btn-link:active {
|
||||
color: $navbar-light-active-color;
|
||||
}
|
||||
|
||||
body .toggle-dark {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body .toggle-light {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .toggle-light {
|
||||
display: block;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .toggle-dark {
|
||||
display: none;
|
||||
}
|
||||
|
||||
pre {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(md) {
|
||||
.btn-copy {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-copy {
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
visibility: hidden !important;
|
||||
position: absolute;
|
||||
right: 0.25rem;
|
||||
top: 0.25rem;
|
||||
z-index: 10;
|
||||
font-family: $font-family-sans-serif;
|
||||
font-size: $font-size-sm;
|
||||
padding: 0.25rem 0.5rem;
|
||||
color: $color-btn-text;
|
||||
background-color: $color-btn-bg;
|
||||
border-color: $color-btn-border;
|
||||
}
|
||||
|
||||
.btn-copy:hover {
|
||||
color: $color-btn-text;
|
||||
background-color: lighten($color-btn-bg, 5%);
|
||||
border-color: lighten($color-btn-border, 15%);
|
||||
}
|
||||
|
||||
.btn-copy:focus {
|
||||
color: $color-btn-text;
|
||||
background-color: $color-btn-bg;
|
||||
border-color: lighten($color-btn-border, 15%);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn-copy:active,
|
||||
.btn-copy.active {
|
||||
color: $color-btn-text;
|
||||
background-color: $color-btn-bg;
|
||||
border-color: lighten($color-btn-border, 15%);
|
||||
}
|
||||
|
||||
.btn-copy:active:focus,
|
||||
.btn-copy.active:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
pre:hover .btn-copy {
|
||||
visibility: visible !important;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-copy::after {
|
||||
content: "Copy";
|
||||
display: block;
|
||||
color: $color-btn-text;
|
||||
}
|
||||
|
||||
.btn-copy:hover::after {
|
||||
content: "Copy";
|
||||
display: block;
|
||||
color: $color-btn-text;
|
||||
}
|
||||
|
||||
.btn-copy:focus::after,
|
||||
.btn-copy:active::after {
|
||||
content: "Copied";
|
||||
display: block;
|
||||
color: $color-btn-text;
|
||||
}
|
||||
|
||||
.collapsible-sidebar {
|
||||
margin: 2.125rem 0;
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.25rem 0.5rem 0.25rem 0;
|
||||
font-weight: $headings-font-weight;
|
||||
font-size: $font-size-base;
|
||||
text-transform: uppercase;
|
||||
color: $body-color;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.btn-toggle:hover,
|
||||
.btn-toggle:focus {
|
||||
color: $body-color;
|
||||
background-color: transparent;
|
||||
outline: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btn-toggle::before {
|
||||
width: 1.25em;
|
||||
line-height: 0;
|
||||
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
||||
transition: transform 0.35s ease;
|
||||
transform-origin: 0.5em 50%;
|
||||
margin-bottom: 0.125rem;
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"]::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.btn-toggle-nav a {
|
||||
display: inline-flex;
|
||||
padding: 0.1875rem 0.5rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-left: 1.25rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn-toggle-nav a:hover,
|
||||
.btn-toggle-nav a:focus {
|
||||
background-color: transparent;
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
.btn-toggle-nav a.active {
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
/*
|
||||
width: 100%;
|
||||
*/
|
||||
|
||||
width: auto;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.dropdown-menu {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.doks-navbar .dropdown-menu,
|
||||
.doks-subnavbar .dropdown-menu {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.doks-navbar .dropdown-item.current,
|
||||
.doks-subnavbar .dropdown-item.current {
|
||||
font-weight: 600;
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 1rem top 0.6rem;
|
||||
background-size: 0.75rem 0.75rem;
|
||||
}
|
||||
|
||||
.btn-close {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-x'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");
|
||||
background-size: 1.5rem;
|
||||
}
|
||||
|
||||
.offcanvas-header .btn-close {
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
.dropdown-toggle::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dropdown-caret {
|
||||
margin-left: -0.1875rem;
|
||||
margin-right: -0.3125rem;
|
||||
}
|
||||
|
||||
.dropdown-menu-main .dropdown-item {
|
||||
color: inherit;
|
||||
font-size: $font-size-base;
|
||||
font-weight: 400;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.dropdown-menu-main .dropdown-item:hover {
|
||||
background-color: transparent;
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
.dropdown-menu-main .dropdown-item.active {
|
||||
color: $primary;
|
||||
font-weight: 400;
|
||||
text-decoration: none;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
.dropdown-menu-main .dropdown-item.active:hover {
|
||||
background-color: transparent;
|
||||
}
|
66
assets/scss/components/_code.scss
Normal file
66
assets/scss/components/_code.scss
Normal file
@ -0,0 +1,66 @@
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: $font-family-monospace;
|
||||
font-size: $font-size-sm;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
code {
|
||||
background: $beige;
|
||||
color: $black;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
line-height: $line-height-base;
|
||||
padding: 1.25rem 1.5rem;
|
||||
tab-size: 4;
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: transparent transparent;
|
||||
}
|
||||
|
||||
.hljs {
|
||||
padding: 1.5rem !important;
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 2rem -1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar {
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar-thumb {
|
||||
background: $gray-400;
|
||||
}
|
||||
|
||||
pre code:hover {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $gray-500 transparent;
|
||||
}
|
||||
|
||||
pre code::-webkit-scrollbar-thumb:hover {
|
||||
background: $gray-500;
|
||||
}
|
||||
|
||||
code.language-mermaid {
|
||||
background: none;
|
||||
}
|
30
assets/scss/components/_comments.scss
Normal file
30
assets/scss/components/_comments.scss
Normal file
@ -0,0 +1,30 @@
|
||||
.comment-list {
|
||||
@extend .list-unstyled;
|
||||
}
|
||||
|
||||
.comment-list ol {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.comment-form p {
|
||||
@extend .form-group !optional;
|
||||
}
|
||||
|
||||
.comment-form input[type="text"],
|
||||
.comment-form input[type="email"],
|
||||
.comment-form input[type="url"],
|
||||
.comment-form textarea {
|
||||
@extend .form-control;
|
||||
}
|
||||
|
||||
.comment-form input[type="submit"] {
|
||||
@extend .btn;
|
||||
@extend .btn-secondary;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.25rem;
|
||||
border-left: 3px solid $gray-300;
|
||||
padding-left: 1rem;
|
||||
}
|
77
assets/scss/components/_details.scss
Normal file
77
assets/scss/components/_details.scss
Normal file
@ -0,0 +1,77 @@
|
||||
details {
|
||||
display: block;
|
||||
border: 1px solid $gray-200;
|
||||
border-radius: 0.25rem;
|
||||
padding: 0.5rem 1rem 0;
|
||||
margin: 0.5rem 0;
|
||||
}
|
||||
|
||||
/*
|
||||
details summary {
|
||||
&::marker {
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
summary {
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
width: calc(100% + 2rem);
|
||||
margin: -0.5rem -1rem 0;
|
||||
padding: 0.5rem 0.75rem;
|
||||
}
|
||||
|
||||
summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
summary:hover {
|
||||
background: $gray-100;
|
||||
}
|
||||
|
||||
details summary::before {
|
||||
display: inline-block;
|
||||
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e");
|
||||
transition: transform 0.35s ease;
|
||||
transform-origin: center center;
|
||||
margin-right: 0.375rem;
|
||||
}
|
||||
|
||||
details[open] > summary::before {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
/*
|
||||
details summary > * {
|
||||
display: inline-block;
|
||||
}
|
||||
*/
|
||||
|
||||
details[open] {
|
||||
padding: 0.5rem 1rem;
|
||||
}
|
||||
|
||||
details[open] > summary {
|
||||
border-bottom: 1px solid $gray-300;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
details h2,
|
||||
details h3,
|
||||
details h4 {
|
||||
margin: 1rem 0 0.5rem;
|
||||
}
|
||||
|
||||
details p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
details ul,
|
||||
details ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
details pre {
|
||||
margin: 0 0 1rem;
|
||||
}
|
19
assets/scss/components/_forms.scss
Normal file
19
assets/scss/components/_forms.scss
Normal file
@ -0,0 +1,19 @@
|
||||
/** Search form */
|
||||
.search-form {
|
||||
@extend .form-inline !optional;
|
||||
}
|
||||
|
||||
.search-form label {
|
||||
@extend .form-group;
|
||||
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.search-form .search-field {
|
||||
@extend .form-control;
|
||||
}
|
||||
|
||||
.search-form .search-submit {
|
||||
@extend .btn;
|
||||
@extend .btn-secondary;
|
||||
}
|
62
assets/scss/components/_images.scss
Normal file
62
assets/scss/components/_images.scss
Normal file
@ -0,0 +1,62 @@
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
figure img {
|
||||
margin-bottom: 0.5rem;
|
||||
line-height: 1;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
figure figcaption {
|
||||
margin: 0.25rem 0 0.75rem;
|
||||
font-size: 0.875em;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
.figure-caption {
|
||||
margin: 0.25rem 0 0.75rem;
|
||||
}
|
||||
|
||||
figure.wide {
|
||||
margin: 2rem -1.5rem;
|
||||
}
|
||||
|
||||
figure.wide .figure-caption {
|
||||
margin: 0.25rem 1.5rem 0.75rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
figure.wide {
|
||||
margin: 2rem -2.5rem;
|
||||
}
|
||||
|
||||
figure.wide .figure-caption {
|
||||
margin: 0.25rem 2.5rem 0.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
figure.wide {
|
||||
margin: 2rem -5rem;
|
||||
}
|
||||
|
||||
figure.wide .figure-caption {
|
||||
margin: 0.25rem 5rem 0.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
.blur-up {
|
||||
filter: blur(5px);
|
||||
}
|
||||
|
||||
.blur-up.lazyloaded {
|
||||
filter: unset;
|
||||
}
|
||||
|
||||
.img-simple {
|
||||
margin-top: 0.375rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
8
assets/scss/components/_mermaid.scss
Normal file
8
assets/scss/components/_mermaid.scss
Normal file
@ -0,0 +1,8 @@
|
||||
.mermaid {
|
||||
margin: 1.5rem 0;
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.mermaid svg {
|
||||
height: auto;
|
||||
}
|
91
assets/scss/components/_search.scss
Normal file
91
assets/scss/components/_search.scss
Normal file
@ -0,0 +1,91 @@
|
||||
.navbar-form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#suggestions {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
margin-top: 0.5rem;
|
||||
width: calc(100vw - 3rem);
|
||||
max-width: calc(400px - 3rem);
|
||||
z-index: $zindex-dropdown;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
right: -2rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#suggestions a,
|
||||
.suggestion__no-results {
|
||||
padding: 0.75rem;
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#suggestions a:focus {
|
||||
background: $gray-100;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
#suggestions div:not(:first-child) {
|
||||
border-top: 1px dashed $gray-200;
|
||||
}
|
||||
|
||||
#suggestions div:first-child {
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions div:last-child {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
#suggestions a:hover {
|
||||
background: $gray-100;
|
||||
}
|
||||
|
||||
#suggestions span {
|
||||
display: flex;
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.suggestion__title {
|
||||
font-weight: $headings-font-weight;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.suggestion__description,
|
||||
.suggestion__no-results {
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
#suggestions {
|
||||
width: 31.125rem;
|
||||
max-width: 31.125rem;
|
||||
}
|
||||
|
||||
#suggestions a {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.suggestion__title {
|
||||
width: 9rem;
|
||||
padding-right: 1rem;
|
||||
border-right: 1px solid $gray-200;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.suggestion__description {
|
||||
width: 19rem;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
}
|
62
assets/scss/components/_syntax.scss
Normal file
62
assets/scss/components/_syntax.scss
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
|
||||
Based on Ascetic by (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||
|
||||
*/
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1.25rem 1.5rem;
|
||||
background: $beige;
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-section,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-link {
|
||||
color: $pink-500;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-quote,
|
||||
.hljs-meta,
|
||||
.hljs-deletion {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-type,
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .hljs {
|
||||
background: $body-overlay-dark;
|
||||
color: $body-color-dark;
|
||||
}
|
||||
|
||||
[data-dark-mode] body .hljs-string,
|
||||
[data-dark-mode] body .hljs-variable,
|
||||
[data-dark-mode] body .hljs-template-variable,
|
||||
[data-dark-mode] body .hljs-symbol,
|
||||
[data-dark-mode] body .hljs-bullet,
|
||||
[data-dark-mode] body .hljs-section,
|
||||
[data-dark-mode] body .hljs-addition,
|
||||
[data-dark-mode] body .hljs-attribute,
|
||||
[data-dark-mode] body .hljs-link {
|
||||
color: $blue-300;
|
||||
}
|
5
assets/scss/components/_tables.scss
Normal file
5
assets/scss/components/_tables.scss
Normal file
@ -0,0 +1,5 @@
|
||||
table {
|
||||
@extend .table;
|
||||
|
||||
margin: 3rem 0;
|
||||
}
|
20
assets/scss/layouts/_footer.scss
Normal file
20
assets/scss/layouts/_footer.scss
Normal file
@ -0,0 +1,20 @@
|
||||
.footer {
|
||||
border-top: 1px solid $gray-200;
|
||||
padding-top: 1.125rem;
|
||||
padding-bottom: 1.125rem;
|
||||
}
|
||||
|
||||
.footer ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.footer li {
|
||||
font-size: $font-size-sm;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.footer li {
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
}
|
493
assets/scss/layouts/_header.scss
Normal file
493
assets/scss/layouts/_header.scss
Normal file
@ -0,0 +1,493 @@
|
||||
.banner .nav li {
|
||||
@extend .nav-item;
|
||||
}
|
||||
|
||||
.banner .nav a {
|
||||
@extend .nav-link;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-weight: $headings-font-weight;
|
||||
}
|
||||
|
||||
/*
|
||||
.navbar-light .navbar-brand,
|
||||
.navbar-light .navbar-brand:hover,
|
||||
.navbar-light .navbar-brand:active {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.navbar-light .navbar-nav .active .nav-link {
|
||||
color: $primary;
|
||||
}
|
||||
*/
|
||||
|
||||
.navbar {
|
||||
z-index: 1000;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
border-bottom: 1px solid $gray-200;
|
||||
|
||||
/*
|
||||
margin-top: 4px;
|
||||
*/
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.navbar {
|
||||
z-index: 1025;
|
||||
padding-top: 0.25rem;
|
||||
padding-bottom: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.navbar-brand {
|
||||
font-size: $font-size-xl;
|
||||
}
|
||||
|
||||
.navbar-text {
|
||||
margin-left: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.nav-item {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@include media-breakpoint-down(sm) {
|
||||
.nav-item:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@include media-breakpoint-down(md) {
|
||||
.navbar .container {
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.break {
|
||||
flex-basis: 100%;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
button#doks-languages {
|
||||
margin: 0.25rem 0 0;
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
margin: 0.25rem 0.5rem 0 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
button#doks-versions {
|
||||
margin: 0.25rem 0 0;
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
margin: 0.25rem 0.5rem 0 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.offcanvas .nav-link {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.doks-subnavbar {
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
border-bottom: 1px solid $gray-200;
|
||||
}
|
||||
|
||||
.doks-subnavbar .nav-link {
|
||||
padding: 0.5rem 1.5rem 0.5rem 0;
|
||||
}
|
||||
|
||||
.doks-subnavbar .nav-link:first-child {
|
||||
padding: 0.5rem 1.5rem 0.5rem 0;
|
||||
}
|
||||
|
||||
.offcanvas .nav-link:hover,
|
||||
.offcanvas .nav-link:focus {
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
.offcanvas .nav-link.active {
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
/*
|
||||
.navbar {
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
border-bottom: 1px solid $gray-200;
|
||||
margin-top: 4px;
|
||||
}
|
||||
*/
|
||||
|
||||
.header-bar {
|
||||
border-top: 4px solid;
|
||||
border-image-source: linear-gradient(90deg, $primary, #8ed6fb 50%, #d32e9d);
|
||||
border-image-slice: 1;
|
||||
}
|
||||
|
||||
.offcanvas .header-bar {
|
||||
margin-bottom: -4px;
|
||||
}
|
||||
|
||||
.home .navbar {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
.navbar-form {
|
||||
position: relative;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
*/
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.navbar-brand {
|
||||
margin-right: 0.75rem !important;
|
||||
}
|
||||
|
||||
.main-nav .nav-item:first-child .nav-link,
|
||||
.social-nav .nav-item:first-child .nav-link {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.main-nav .nav-item:last-child .nav-link,
|
||||
.social-nav .nav-item:last-child .nav-link {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.doks-search {
|
||||
max-width: 20rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-bottom: 0.125rem;
|
||||
}
|
||||
|
||||
/*
|
||||
.navbar-form {
|
||||
margin-top: 0;
|
||||
margin-left: 6rem;
|
||||
margin-right: 1.5rem;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
.form-control.is-search {
|
||||
padding-right: 4rem;
|
||||
border: 1px solid transparent;
|
||||
background: $gray-100;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
width: calc(100% + 2rem);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.form-control.is-search:focus {
|
||||
border: 1px solid $primary;
|
||||
}
|
||||
|
||||
.doks-search::after {
|
||||
position: absolute;
|
||||
top: 0.4625rem;
|
||||
right: 0.5375rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 1.5rem;
|
||||
padding-right: 0.3125rem;
|
||||
padding-left: 0.3125rem;
|
||||
font-size: $font-size-base * 0.75;
|
||||
color: $gray-700;
|
||||
content: "Ctrl + /";
|
||||
border: 1px solid $gray-300;
|
||||
border-radius: 0.25rem;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
right: -1.4625rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
right: 0.3125rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@include media-breakpoint-up(lg) {
|
||||
.navbar-form {
|
||||
margin-left: 15rem;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.navbar-form {
|
||||
margin-left: 30rem;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
.form-control.is-search {
|
||||
*/
|
||||
|
||||
/*
|
||||
padding-right: calc(1.5em + 0.75rem);
|
||||
*/
|
||||
|
||||
/*
|
||||
padding-right: 2.5rem;
|
||||
background: $gray-100;
|
||||
border: 0;
|
||||
*/
|
||||
|
||||
/*
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right calc(0.375em + 0.1875rem) center;
|
||||
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
||||
*/
|
||||
|
||||
/*
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
.navbar-form::after {
|
||||
position: absolute;
|
||||
top: 0.4625rem;
|
||||
right: 0.5375rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 1.5rem;
|
||||
padding-right: 0.4375rem;
|
||||
padding-left: 0.4375rem;
|
||||
font-size: $font-size-base * 0.75;
|
||||
color: $gray-700;
|
||||
content: "/";
|
||||
border: 1px solid $gray-300;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
*/
|
||||
|
||||
/*! purgecss start ignore */
|
||||
.algolia-autocomplete {
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .ds-dropdown-menu {
|
||||
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
.algolia-autocomplete .ds-dropdown-menu {
|
||||
max-width: 512px !important;
|
||||
min-width: 312px !important;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column::after {
|
||||
content: "/";
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-suggestion--category-header {
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-suggestion--title {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
|
||||
padding: 0 0.05em;
|
||||
}
|
||||
|
||||
.algolia-autocomplete .algolia-docsearch-footer {
|
||||
margin-top: 1rem;
|
||||
margin-right: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
/*! purgecss end ignore */
|
||||
|
||||
/*
|
||||
* Source: https://medium.com/creative-technology-concepts-code/responsive-mobile-dropdown-navigation-using-css-only-7218e4498a99
|
||||
*/
|
||||
|
||||
/* Style the menu icon for the dropdown */
|
||||
|
||||
.navbar .menu-icon {
|
||||
cursor: pointer;
|
||||
|
||||
/* display: inline-block; */
|
||||
|
||||
/* float: right; */
|
||||
padding: 1.125rem 0.625rem;
|
||||
margin: 0 0 0 -0.625rem;
|
||||
|
||||
/* position: relative; */
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.navbar .menu-icon .navicon {
|
||||
background: $navbar-light-color;
|
||||
display: block;
|
||||
height: 2px;
|
||||
position: relative;
|
||||
transition: background 0.2s ease-out;
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
.navbar .menu-icon .navicon::before,
|
||||
.navbar .menu-icon .navicon::after {
|
||||
background: $navbar-light-color;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
transition: all 0.2s ease-out;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.navbar .menu-icon .navicon::before {
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
.navbar .menu-icon .navicon::after {
|
||||
top: -5px;
|
||||
}
|
||||
|
||||
/* Add the icon and menu animations when the checkbox is clicked */
|
||||
|
||||
.navbar .menu-btn {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.navbar .menu-btn:checked ~ .navbar-collapse {
|
||||
display: block;
|
||||
max-height: 100vh;
|
||||
}
|
||||
|
||||
.navbar .menu-btn:checked ~ .menu-icon .navicon {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.navbar .menu-btn:checked ~ .menu-icon .navicon::before {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.navbar .menu-btn:checked ~ .menu-icon .navicon::after {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.navbar .menu-btn:checked ~ .menu-icon:not(.steps) .navicon::before,
|
||||
.navbar .menu-btn:checked ~ .menu-icon:not(.steps) .navicon::after {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.btn-menu {
|
||||
margin-left: 1rem;
|
||||
border: transparent;
|
||||
}
|
||||
|
||||
.btn-doks-light {
|
||||
border: transparent;
|
||||
}
|
||||
|
||||
.btn-menu,
|
||||
.doks-sidebar-toggle {
|
||||
padding-right: 0.25rem;
|
||||
padding-left: 0.25rem;
|
||||
margin-right: -0.5rem;
|
||||
}
|
||||
|
||||
.btn-menu:hover,
|
||||
.btn-doks-light:hover,
|
||||
.doks-sidebar-toggle:hover {
|
||||
background: $pink-100;
|
||||
border: transparent;
|
||||
}
|
||||
|
||||
.btn-menu:focus,
|
||||
.btn-doks-light:focus,
|
||||
.doks-sidebar-toggle:focus,
|
||||
.doks-mode-toggle:focus {
|
||||
outline: 0;
|
||||
border: transparent;
|
||||
}
|
||||
|
||||
.doks-sidebar-toggle .doks-collapse,
|
||||
.doks-toc-toggle .doks-collapse {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.doks-sidebar-toggle:not(.collapsed) .doks-expand,
|
||||
.doks-toc-toggle:not(.collapsed) .doks-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.doks-sidebar-toggle:not(.collapsed) .doks-collapse,
|
||||
.doks-toc-toggle:not(.collapsed) .doks-collapse {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.navbar-light .navbar-brand,
|
||||
.navbar-light .navbar-brand:hover,
|
||||
.navbar-light .navbar-brand:active {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.navbar-light .navbar-nav .active .nav-link {
|
||||
color: $primary;
|
||||
}
|
||||
|
||||
.dropdown-divider {
|
||||
border-top: 1px dashed $gray-200;
|
||||
}
|
||||
|
||||
.dropdown-item:hover {
|
||||
background: $gray-100;
|
||||
}
|
||||
|
||||
.dropdown-item:active {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.social-link {
|
||||
padding-left: 0.5rem;
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
padding-right: 0.5rem;
|
||||
padding-left: 0.5rem;
|
||||
}
|
||||
}
|
64
assets/scss/layouts/_pages.scss
Normal file
64
assets/scss/layouts/_pages.scss
Normal file
@ -0,0 +1,64 @@
|
||||
.docs-content > h2[id]::before,
|
||||
.docs-content > h3[id]::before,
|
||||
.docs-content > h4[id]::before {
|
||||
display: block;
|
||||
height: 6rem;
|
||||
margin-top: -6rem;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.anchor {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
h1:hover a,
|
||||
h2:hover a,
|
||||
h3:hover a,
|
||||
h4:hover a {
|
||||
visibility: visible;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.card-list {
|
||||
margin-top: 2.25rem;
|
||||
}
|
||||
|
||||
.page-footer-meta {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.edit-page,
|
||||
.last-modified {
|
||||
font-size: $font-size-sm;
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.edit-page,
|
||||
.last-modified {
|
||||
font-size: $font-size-base;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.edit-page svg,
|
||||
.last-modified svg {
|
||||
margin-right: 0.25rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
p.meta {
|
||||
margin-top: 0.5rem;
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
margin-top: 2.25rem;
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.page-link:hover {
|
||||
text-decoration: none;
|
||||
}
|
57
assets/scss/layouts/_posts.scss
Normal file
57
assets/scss/layouts/_posts.scss
Normal file
@ -0,0 +1,57 @@
|
||||
.home .card,
|
||||
.contributors.list .card,
|
||||
.blog.list .card,
|
||||
.blog.single .card,
|
||||
.categories.list .card,
|
||||
.tags.list .card {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.home .card:hover,
|
||||
.contributors.list .card:hover,
|
||||
.blog.list .card:hover,
|
||||
.blog.single .card:hover,
|
||||
.categories.list .card:hover,
|
||||
.tags.list .card:hover {
|
||||
transform: scale(1.025);
|
||||
}
|
||||
|
||||
.contributors.list .card.card-terms:hover,
|
||||
.categories.list .card.card-terms:hover,
|
||||
.tags.list .card.card-terms:hover {
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.home .card-body,
|
||||
.contributors.list .card-body,
|
||||
.blog.list .card-body,
|
||||
.blog.single .card-body,
|
||||
.categories.list .card-body,
|
||||
.tags.list .card-body {
|
||||
padding: 0 2rem 1rem;
|
||||
}
|
||||
|
||||
.contributors.list .card-terms .card-body,
|
||||
.categories.list .card-terms .card-body,
|
||||
.tags.list .card-terms .card-body {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.blog-header {
|
||||
text-align: center;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.blog-footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.related-posts {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
h2.section-title {
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
116
assets/scss/layouts/_sidebar.scss
Normal file
116
assets/scss/layouts/_sidebar.scss
Normal file
@ -0,0 +1,116 @@
|
||||
.docs-links,
|
||||
.docs-toc {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $white $white;
|
||||
}
|
||||
|
||||
.docs-links::-webkit-scrollbar,
|
||||
.docs-toc::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
}
|
||||
|
||||
.docs-links::-webkit-scrollbar-track,
|
||||
.docs-toc::-webkit-scrollbar-track {
|
||||
background: $white;
|
||||
}
|
||||
|
||||
.docs-links::-webkit-scrollbar-thumb,
|
||||
.docs-toc::-webkit-scrollbar-thumb {
|
||||
background: $white;
|
||||
}
|
||||
|
||||
.docs-links:hover,
|
||||
.docs-toc:hover {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: $gray-200 $white;
|
||||
}
|
||||
|
||||
.docs-links:hover::-webkit-scrollbar-thumb,
|
||||
.docs-toc:hover::-webkit-scrollbar-thumb {
|
||||
background: $gray-200;
|
||||
}
|
||||
|
||||
.docs-links::-webkit-scrollbar-thumb:hover,
|
||||
.docs-toc::-webkit-scrollbar-thumb:hover {
|
||||
background: $gray-200;
|
||||
}
|
||||
|
||||
.docs-links h3,
|
||||
.page-links h3 {
|
||||
text-transform: uppercase;
|
||||
font-size: $font-size-base;
|
||||
margin: 1.25rem 0 0.5rem;
|
||||
padding: 1.5rem 0 0;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.docs-links h3,
|
||||
.page-links h3 {
|
||||
margin: 1.125rem 1.5rem 0.75rem 0;
|
||||
padding: 1.375rem 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.docs-links h3:not(:first-child) {
|
||||
border-top: 1px solid $gray-200;
|
||||
}
|
||||
|
||||
a.docs-link {
|
||||
color: $body-color;
|
||||
display: block;
|
||||
padding: 0.125rem 0;
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
.page-links li {
|
||||
margin-top: 0.375rem;
|
||||
padding-top: 0.375rem;
|
||||
}
|
||||
|
||||
.page-links li ul li {
|
||||
border-top: none;
|
||||
padding-left: 1rem;
|
||||
margin-top: 0.125rem;
|
||||
padding-top: 0.125rem;
|
||||
}
|
||||
|
||||
.page-links li:not(:first-child) {
|
||||
border-top: 1px dashed $gray-200;
|
||||
}
|
||||
|
||||
.page-links a {
|
||||
color: $body-color;
|
||||
display: block;
|
||||
padding: 0.125rem 0;
|
||||
font-size: $font-size-base * 0.9375;
|
||||
}
|
||||
|
||||
.docs-link:hover,
|
||||
.docs-link.active,
|
||||
.page-links a:hover {
|
||||
text-decoration: none;
|
||||
color: $link-color;
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.dropdown-menu-main .dropdown-item.active,
|
||||
.docs-link.active {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.docs-links h3.sidebar-link,
|
||||
.page-links h3.sidebar-link {
|
||||
text-transform: none;
|
||||
font-size: $font-size-md;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.docs-links h3.sidebar-link a,
|
||||
.page-links h3.sidebar-link a {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.docs-links h3.sidebar-link a:hover,
|
||||
.page-links h3.sidebar-link a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
0
assets/scss/vendor/.gitkeep
vendored
Normal file
0
assets/scss/vendor/.gitkeep
vendored
Normal file
17
babel.config.js
Normal file
17
babel.config.js
Normal file
@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
[
|
||||
'@babel/preset-env',
|
||||
{
|
||||
targets: {
|
||||
browsers: [
|
||||
// Best practice: https://github.com/babel/babel/issues/7789
|
||||
'>=1%',
|
||||
'not ie 11',
|
||||
'not op_mini all'
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
};
|
110
config/_default/config.toml
Normal file
110
config/_default/config.toml
Normal file
@ -0,0 +1,110 @@
|
||||
baseurl = "https://doks.netlify.app/"
|
||||
canonifyURLs = false
|
||||
disableAliases = true
|
||||
disableHugoGeneratorInject = true
|
||||
enableEmoji = true
|
||||
enableGitInfo = false
|
||||
enableRobotsTXT = true
|
||||
paginate = 7
|
||||
rssLimit = 10
|
||||
|
||||
# Multilingual
|
||||
defaultContentLanguage = "en"
|
||||
disableLanguages = ["de", "nl"]
|
||||
# defaultContentLanguageInSubdir = true
|
||||
|
||||
# add redirects/headers
|
||||
[outputs]
|
||||
home = ["HTML", "RSS", "REDIRECTS", "HEADERS"]
|
||||
section = ["HTML", "RSS", "SITEMAP"]
|
||||
|
||||
# remove .{ext} from text/netlify
|
||||
[mediaTypes."text/netlify"]
|
||||
suffixes = [""]
|
||||
delimiter = ""
|
||||
|
||||
# add output format for netlify _redirects
|
||||
[outputFormats.REDIRECTS]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_redirects"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
|
||||
# add output format for netlify _headers
|
||||
[outputFormats.HEADERS]
|
||||
mediaType = "text/netlify"
|
||||
baseName = "_headers"
|
||||
isPlainText = true
|
||||
notAlternative = true
|
||||
|
||||
# add output format for section sitemap.xml
|
||||
[outputFormats.SITEMAP]
|
||||
mediaType = "application/xml"
|
||||
baseName = "sitemap"
|
||||
isHTML = false
|
||||
isPlainText = true
|
||||
noUgly = true
|
||||
rel = "sitemap"
|
||||
|
||||
[caches]
|
||||
[caches.getjson]
|
||||
dir = ":cacheDir/:project"
|
||||
maxAge = "10s"
|
||||
|
||||
[sitemap]
|
||||
changefreq = "weekly"
|
||||
filename = "sitemap.xml"
|
||||
priority = 0.5
|
||||
|
||||
[taxonomies]
|
||||
contributor = "contributors"
|
||||
category = "categories"
|
||||
tag = "tags"
|
||||
|
||||
[permalinks]
|
||||
blog = "/blog/:title/"
|
||||
# docs = "/docs/1.0/:sections[1:]/:title/"
|
||||
|
||||
[minify.tdewolff.html]
|
||||
keepWhitespace = false
|
||||
|
||||
[related]
|
||||
threshold = 80
|
||||
includeNewer = true
|
||||
toLower = false
|
||||
[[related.indices]]
|
||||
name = "categories"
|
||||
weight = 100
|
||||
[[related.indices]]
|
||||
name = "tags"
|
||||
weight = 80
|
||||
[[related.indices]]
|
||||
name = "date"
|
||||
weight = 10
|
||||
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = true
|
||||
min = "0.80.0"
|
||||
max = ""
|
||||
[[module.mounts]]
|
||||
source = "assets"
|
||||
target = "assets"
|
||||
[[module.mounts]]
|
||||
source = "static"
|
||||
target = "static"
|
||||
[[module.mounts]]
|
||||
source = "layouts"
|
||||
target = "layouts"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/flexsearch"
|
||||
target = "assets/js/vendor/flexsearch"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/katex"
|
||||
target = "assets/js/vendor/katex"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/mermaid"
|
||||
target = "assets/js/vendor/mermaid"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/@hyas/images/layouts"
|
||||
target = "layouts"
|
28
config/_default/languages.toml
Normal file
28
config/_default/languages.toml
Normal file
@ -0,0 +1,28 @@
|
||||
[en]
|
||||
languageName = "English"
|
||||
contentDir = "content/en"
|
||||
weight = 10
|
||||
[en.params]
|
||||
languageISO = "EN"
|
||||
languageTag = "en-US"
|
||||
|
||||
[de]
|
||||
languageName = "German"
|
||||
contentDir = "content/de"
|
||||
weight = 15
|
||||
[de.params]
|
||||
languageISO = "DE"
|
||||
languageTag = "de-DE"
|
||||
|
||||
[nl]
|
||||
languageName = "Nederlands"
|
||||
contentDir = "content/nl"
|
||||
weight = 20
|
||||
[nl.params]
|
||||
languageISO = "NL"
|
||||
languageTag = "nl-NL"
|
||||
titleAddition = "Modern documentatie-thema"
|
||||
description = "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard."
|
||||
titleHome = "Doks thema"
|
||||
footer = "Mogelijk gemaakt door <a href=\"https://www.netlify.com/\">Netlify</a>, <a href=\"https://gohugo.io/\">Hugo</a>, en <a href=\"https://getdoks.org/\">Doks</a>"
|
||||
alertText = "Introductie van het Doks-kinderthema, verschillende DX + UX-updates en meer! <a class=\"alert-link stretched-link\" href=\"https://getdoks.org/blog/doks-v0.2/\">Bekijk Doks v0.2</a>"
|
29
config/_default/markup.toml
Normal file
29
config/_default/markup.toml
Normal file
@ -0,0 +1,29 @@
|
||||
defaultMarkdownHandler = "goldmark"
|
||||
|
||||
[goldmark]
|
||||
[goldmark.extensions]
|
||||
linkify = false
|
||||
[goldmark.parser]
|
||||
autoHeadingID = true
|
||||
autoHeadingIDType = "github"
|
||||
[goldmark.parser.attribute]
|
||||
block = true
|
||||
title = true
|
||||
[goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
[highlight]
|
||||
codeFences = false
|
||||
guessSyntax = false
|
||||
hl_Lines = ""
|
||||
lineNoStart = 1
|
||||
lineNos = false
|
||||
lineNumbersInTable = true
|
||||
noClasses = false
|
||||
style = "dracula"
|
||||
tabWidth = 4
|
||||
|
||||
[tableOfContents]
|
||||
endLevel = 3
|
||||
ordered = false
|
||||
startLevel = 2
|
83
config/_default/menus/menus.en.toml
Normal file
83
config/_default/menus/menus.en.toml
Normal file
@ -0,0 +1,83 @@
|
||||
[[docs]]
|
||||
name = "Prologue"
|
||||
weight = 10
|
||||
identifier = "prologue"
|
||||
url = "/docs/prologue/"
|
||||
|
||||
[[docs]]
|
||||
name = "Help"
|
||||
weight = 60
|
||||
identifier = "help"
|
||||
url = "/docs/help/"
|
||||
|
||||
# [[docs]]
|
||||
# name = "Lorem"
|
||||
# weight = 70
|
||||
# identifier = "lorem"
|
||||
# url = "/docs/lorem/"
|
||||
|
||||
[[guide]]
|
||||
name = "Lorem"
|
||||
weight = 10
|
||||
identifier = "lorem"
|
||||
url = "/guide/lorem/"
|
||||
|
||||
[[tutorial]]
|
||||
name = "Lorem"
|
||||
weight = 10
|
||||
identifier = "lorem"
|
||||
url = "/tutorial/lorem/"
|
||||
|
||||
[[main]]
|
||||
name = "Docs"
|
||||
url = "/docs/prologue/introduction/"
|
||||
# url = "/docs/1.0/prologue/introduction/"
|
||||
weight = 10
|
||||
|
||||
# [[main]]
|
||||
# name = "Tutorial"
|
||||
# url = "/tutorial/lorem/ipsum/"
|
||||
# weight = 15
|
||||
|
||||
[[main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Get Started"
|
||||
weight = 30
|
||||
identifier = "get-started"
|
||||
url = "/docs/prologue/introduction/"
|
||||
|
||||
[[main]]
|
||||
name = "Quick Start"
|
||||
weight = 40
|
||||
identifier = "quick-start"
|
||||
url = "/docs/prologue/quick-start/"
|
||||
parent = "get-started"
|
||||
|
||||
[[main]]
|
||||
name = "Tutorial"
|
||||
weight = 50
|
||||
identifier = "tutorial"
|
||||
url = "https://getdoks.org/tutorial/introduction/"
|
||||
parent = "get-started"
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
pre = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-github\"><path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"></path></svg>"
|
||||
url = "https://github.com/h-enk/doks"
|
||||
post = "v0.1.0"
|
||||
weight = 10
|
||||
|
||||
[[social]]
|
||||
name = "Twitter"
|
||||
pre = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-twitter\"><path d=\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"></path></svg>"
|
||||
url = "https://twitter.com/getdoks"
|
||||
weight = 20
|
||||
|
||||
# [[footer]]
|
||||
# name = "Privacy"
|
||||
# url = "/privacy-policy/"
|
||||
# weight = 10
|
39
config/_default/menus/menus.nl.toml
Normal file
39
config/_default/menus/menus.nl.toml
Normal file
@ -0,0 +1,39 @@
|
||||
[[docs]]
|
||||
name = "Prologue"
|
||||
weight = 10
|
||||
identifier = "prologue"
|
||||
url = "/docs/prologue/"
|
||||
|
||||
[[docs]]
|
||||
name = "Help"
|
||||
weight = 60
|
||||
identifier = "help"
|
||||
url = "/docs/help/"
|
||||
|
||||
[[main]]
|
||||
name = "Docs"
|
||||
url = "/docs/prologue/introduction/"
|
||||
weight = 10
|
||||
|
||||
# [[main]]
|
||||
# name = "Blog"
|
||||
# url = "/blog/"
|
||||
# weight = 20
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
pre = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-github\"><path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"></path></svg>"
|
||||
url = "https://github.com/h-enk/doks"
|
||||
post = "v0.1.0"
|
||||
weight = 10
|
||||
|
||||
[[social]]
|
||||
name = "Twitter"
|
||||
pre = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-twitter\"><path d=\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"></path></svg>"
|
||||
url = "https://twitter.com/getdoks"
|
||||
weight = 20
|
||||
|
||||
# [[footer]]
|
||||
# name = "Privacy"
|
||||
# url = "/privacy-policy/"
|
||||
# weight = 10
|
114
config/_default/params.toml
Normal file
114
config/_default/params.toml
Normal file
@ -0,0 +1,114 @@
|
||||
# Meta Data for SEO
|
||||
|
||||
## Homepage
|
||||
title = "Doks"
|
||||
titleSeparator = "-"
|
||||
titleAddition = "Modern Documentation Theme"
|
||||
description = "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
|
||||
|
||||
## Documentation
|
||||
# docsVersion = "0.3"
|
||||
|
||||
## Open Graph
|
||||
images = ["doks.png"]
|
||||
ogLocale = "en_US"
|
||||
domainTLD = "doks.netlify.app"
|
||||
titleHome = "Doks Theme"
|
||||
|
||||
## Twitter Cards
|
||||
twitterSite = "@getdoks"
|
||||
twitterCreator = "@henkverlinde"
|
||||
|
||||
## JSON-LD
|
||||
# schemaType = "Person"
|
||||
schemaType = "Organization"
|
||||
schemaName = "Doks"
|
||||
schemaAuthor = "Henk Verlinde"
|
||||
schemaAuthorTwitter = "https://twitter.com/henkverlinde"
|
||||
schemaAuthorLinkedIn = "https://www.linkedin.com/in/henkverlinde/"
|
||||
schemaAuthorGitHub = "https://github.com/h-enk"
|
||||
schemaLocale = "en-US"
|
||||
schemaLogo = "logo-doks.png"
|
||||
schemaLogoWidth = 512
|
||||
schemaLogoHeight = 512
|
||||
schemaImage = "doks.png"
|
||||
schemaImageWidth = 1280
|
||||
schemaImageHeight = 640
|
||||
schemaTwitter = "https://twitter.com/getdoks"
|
||||
schemaLinkedIn = ""
|
||||
schemaGitHub = "https://github.com/h-enk/doks"
|
||||
schemaSection = "blog"
|
||||
|
||||
## Sitelinks Search Box
|
||||
siteLinksSearchBox = false
|
||||
|
||||
## Chrome Browser
|
||||
themeColor = "#fff"
|
||||
|
||||
# Images
|
||||
quality = 85
|
||||
bgColor = "#fff"
|
||||
landscapePhotoWidths = [900, 800, 700, 600, 500]
|
||||
portraitPhotoWidths = [800, 700, 600, 500]
|
||||
lqipWidth = "20x"
|
||||
smallLimit = "300"
|
||||
|
||||
# Images
|
||||
imageResponsive = true
|
||||
imageConvertTo = "webp"
|
||||
imageImageSizes = ["480","720","1080","1280","1600","2048"]
|
||||
singleSize = false
|
||||
imageAddClass = "img-fluid lazyload blur-up"
|
||||
|
||||
### Image template
|
||||
defaultImage = "default-image.png" # put in `./assets/images/`
|
||||
fillImage = "1270x740 Center" # normalize image size
|
||||
|
||||
# Footer
|
||||
footer = "Powered by <a class=\"text-muted\" href=\"https://www.netlify.com/\">Netlify</a>, <a class=\"text-muted\" href=\"https://gohugo.io/\">Hugo</a>, and <a class=\"text-muted\" href=\"https://getdoks.org/\">Doks</a>"
|
||||
|
||||
# Feed
|
||||
copyRight = "Copyright (c) 2020-2021 Henk Verlinde"
|
||||
|
||||
# Alert
|
||||
alert = false
|
||||
alertDismissable = true
|
||||
# alertText = "Introducing the Doks child theme, several DX + UX updates, and more! <a class=\"alert-link stretched-link\" href=\"https://getdoks.org/blog/doks-v0.2/\" target=\"_blank\" rel=\"noopener\">Check out Doks v0.2</a>"
|
||||
alertText = "Introducing the Doks child theme, several DX + UX updates, and more! <a class=\"alert-link stretched-link\" href=\"https://getdoks.org/blog/doks-v0.2/\">Check out Doks v0.2</a>"
|
||||
|
||||
# Edit Page
|
||||
# repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster
|
||||
repoHost = "GitHub"
|
||||
#repoHost = "Gitea"
|
||||
docsRepo = "https://github.com/h-enk/doks"
|
||||
docsRepoBranch = "master"
|
||||
docsRepoSubPath = ""
|
||||
editPage = false
|
||||
lastMod = false
|
||||
|
||||
[sections]
|
||||
sectionNav = ["docs", "guides"]
|
||||
|
||||
[options]
|
||||
lazySizes = true
|
||||
clipBoard = true
|
||||
instantPage = true
|
||||
flexSearch = true
|
||||
searchSectionsShow = []
|
||||
searchSectionsIndex = []
|
||||
darkMode = true
|
||||
bootStrapJs = true
|
||||
breadCrumb = false
|
||||
highLight = true
|
||||
kaTex = false
|
||||
multilingualMode = false
|
||||
docsVersioning = false
|
||||
fullWidth = false
|
||||
navbarSticky = true
|
||||
toTopButton = false
|
||||
scrollSpy = false # experimental; needs Bootstrap >= 5.2.0-beta1
|
||||
|
||||
[menu]
|
||||
[menu.section]
|
||||
auto = true
|
||||
collapsibleSidebar = true
|
1
config/next/config.toml
Normal file
1
config/next/config.toml
Normal file
@ -0,0 +1 @@
|
||||
canonifyURLs = false
|
44
config/postcss.config.js
Normal file
44
config/postcss.config.js
Normal file
@ -0,0 +1,44 @@
|
||||
const autoprefixer = require('autoprefixer');
|
||||
const purgecss = require('@fullhuman/postcss-purgecss');
|
||||
const whitelister = require('purgecss-whitelister');
|
||||
|
||||
module.exports = {
|
||||
plugins: [
|
||||
autoprefixer(),
|
||||
purgecss({
|
||||
content: [
|
||||
'./layouts/**/*.html',
|
||||
'./content/**/*.md',
|
||||
],
|
||||
safelist: [
|
||||
'lazyloaded',
|
||||
'table',
|
||||
'thead',
|
||||
'tbody',
|
||||
'tr',
|
||||
'th',
|
||||
'td',
|
||||
'h5',
|
||||
'alert-link',
|
||||
'container-xxl',
|
||||
'container-fluid',
|
||||
'offcanvas-backdrop',
|
||||
'img-fluid',
|
||||
'lazyload',
|
||||
'blur-up',
|
||||
'figcaption',
|
||||
...whitelister([
|
||||
'./assets/scss/components/_alerts.scss',
|
||||
'./assets/scss/components/_buttons.scss',
|
||||
'./assets/scss/components/_code.scss',
|
||||
'./assets/scss/components/_diagrams.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/common/_dark.scss',
|
||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||
'./node_modules/katex/dist/katex.css',
|
||||
]),
|
||||
],
|
||||
}),
|
||||
],
|
||||
}
|
1
config/production/config.toml
Normal file
1
config/production/config.toml
Normal file
@ -0,0 +1 @@
|
||||
canonifyURLs = false
|
9
content/en/_index.md
Normal file
9
content/en/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title : "Modern Documentation Theme"
|
||||
description: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
|
||||
lead: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
|
||||
date: 2020-10-06T08:47:36+00:00
|
||||
lastmod: 2020-10-06T08:47:36+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
8
content/en/blog/_index.md
Normal file
8
content/en/blog/_index.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Blog"
|
||||
description: "The Doks Blog."
|
||||
date: 2020-10-06T08:49:55+00:00
|
||||
lastmod: 2020-10-06T08:49:55+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
17
content/en/blog/say-hello-to-doks/index.md
Normal file
17
content/en/blog/say-hello-to-doks/index.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Say hello to Doks 👋"
|
||||
description: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default."
|
||||
excerpt: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default."
|
||||
date: 2020-11-04T09:19:42+01:00
|
||||
lastmod: 2020-11-04T09:19:42+01:00
|
||||
draft: false
|
||||
weight: 50
|
||||
images: []
|
||||
categories: ["News"]
|
||||
tags: ["security", "performance", "SEO"]
|
||||
contributors: ["Henk Verlinde"]
|
||||
pinned: false
|
||||
homepage: false
|
||||
---
|
||||
|
||||
Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.
|
10
content/en/contact/index.md
Normal file
10
content/en/contact/index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Contact"
|
||||
description: "Drop us an email."
|
||||
date: 2020-08-27T19:25:12+02:00
|
||||
lastmod: 2020-08-27T19:25:12+02:00
|
||||
draft: true
|
||||
images: []
|
||||
---
|
||||
|
||||
{{< email user="hello" domain="getdoks.org" >}}
|
10
content/en/contributors/_index.md
Normal file
10
content/en/contributors/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Contributors"
|
||||
description: "The Doks contributors."
|
||||
date: 2020-10-06T08:50:29+00:00
|
||||
lastmod: 2020-10-06T08:50:29+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
||||
The Doks contributors.
|
12
content/en/contributors/henk-verlinde/_index.md
Normal file
12
content/en/contributors/henk-verlinde/_index.md
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Henk Verlinde"
|
||||
description: "Creator of Hyas."
|
||||
date: 2020-10-06T08:50:45+00:00
|
||||
lastmod: 2020-10-06T08:50:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
||||
Creator of Hyas.
|
||||
|
||||
[@HenkVerlinde](https://twitter.com/henkverlinde)
|
9
content/en/docs/_index.md
Normal file
9
content/en/docs/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title : "Docs"
|
||||
description: "Docs Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:23+00:00
|
||||
lastmod: 2020-10-06T08:48:23+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
10
content/en/docs/help/_index.md
Normal file
10
content/en/docs/help/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Help"
|
||||
description: "Help Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:15+00:00
|
||||
lastmod: 2020-10-06T08:49:15+00:00
|
||||
draft: false
|
||||
images: []
|
||||
weight: 600
|
||||
---
|
50
content/en/docs/help/faq.md
Normal file
50
content/en/docs/help/faq.md
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "FAQ"
|
||||
description: "Answers to frequently asked questions."
|
||||
lead: "Answers to frequently asked questions."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 630
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Hyas?
|
||||
|
||||
Doks is a [Hyas theme](https://gethyas.com/themes/) build by the creator of Hyas.
|
||||
|
||||
## Footer notice?
|
||||
|
||||
Please keep it in place.
|
||||
|
||||
## Keyboard shortcuts for search?
|
||||
|
||||
- focus: `Ctrl + /`
|
||||
- select: `↓` and `↑`
|
||||
- open: `Enter`
|
||||
- close: `Esc`
|
||||
|
||||
## Other documentation?
|
||||
|
||||
- [Netlify](https://docs.netlify.com/)
|
||||
- [Hugo](https://gohugo.io/documentation/)
|
||||
|
||||
## Can I get support?
|
||||
|
||||
Create a topic:
|
||||
|
||||
- [Netlify Community](https://community.netlify.com/)
|
||||
- [Hugo Forums](https://discourse.gohugo.io/)
|
||||
- [Doks Discussions](https://github.com/h-enk/doks/discussions)
|
||||
|
||||
## Contact the creator?
|
||||
|
||||
Send `h-enk` a message:
|
||||
|
||||
- [Netlify Community](https://community.netlify.com/)
|
||||
- [Hugo Forums](https://discourse.gohugo.io/)
|
||||
- [Doks Discussions](https://github.com/h-enk/doks/discussions)
|
32
content/en/docs/help/how-to-update.md
Normal file
32
content/en/docs/help/how-to-update.md
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "How to Update"
|
||||
description: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
|
||||
lead: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
|
||||
date: 2020-11-12T13:26:54+01:00
|
||||
lastmod: 2020-11-12T13:26:54+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 610
|
||||
toc: true
|
||||
---
|
||||
|
||||
{{< alert icon="💡" text="Learn more about <a href=\"https://docs.npmjs.com/about-semantic-versioning\">semantic versioning</a> and <a href=\"https://docs.npmjs.com/cli/v6/using-npm/semver#advanced-range-syntax\">advanced range syntax</a>." />}}
|
||||
|
||||
## Check for outdated packages
|
||||
|
||||
The [`npm outdated`](https://docs.npmjs.com/cli/v7/commands/npm-outdated) command will check the registry to see if any (or, specific) installed packages are currently outdated:
|
||||
|
||||
```bash
|
||||
npm outdated [[<@scope>/]<pkg> ...]
|
||||
```
|
||||
|
||||
## Update packages
|
||||
|
||||
The [`npm update`](https://docs.npmjs.com/cli/v7/commands/npm-update) command will update all the packages listed to the latest version (specified by the tag config), respecting semver:
|
||||
|
||||
```bash
|
||||
npm update [<pkg>...]
|
||||
```
|
30
content/en/docs/help/troubleshooting.md
Normal file
30
content/en/docs/help/troubleshooting.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "Troubleshooting"
|
||||
description: "Solutions to common problems."
|
||||
lead: "Solutions to common problems."
|
||||
date: 2020-11-12T15:22:20+01:00
|
||||
lastmod: 2020-11-12T15:22:20+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 620
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Problems updating npm packages
|
||||
|
||||
Delete the `./node_modules` folder, and run again:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Problems with cache
|
||||
|
||||
Delete the temporary directories:
|
||||
|
||||
```bash
|
||||
npm run clean
|
||||
```
|
10
content/en/docs/lorem/_index.md
Normal file
10
content/en/docs/lorem/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Lorem"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T19:58:14+01:00
|
||||
lastmod: 2022-01-18T19:58:14+01:00
|
||||
draft: true
|
||||
images: []
|
||||
toc: true
|
||||
---
|
15
content/en/docs/lorem/ipsum/_index.md
Normal file
15
content/en/docs/lorem/ipsum/_index.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Ipsum"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T20:00:32+01:00
|
||||
lastmod: 2022-01-18T20:00:32+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "lorem"
|
||||
identifier: "ipsum"
|
||||
weight: 999
|
||||
toc: true
|
||||
---
|
15
content/en/docs/lorem/ipsum/amet/_index.md
Normal file
15
content/en/docs/lorem/ipsum/amet/_index.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Amet"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T20:07:56+01:00
|
||||
lastmod: 2022-01-18T20:07:56+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "ipsum"
|
||||
identifier: "amet"
|
||||
weight: 999
|
||||
toc: true
|
||||
---
|
14
content/en/docs/lorem/ipsum/amet/consectetur/index.md
Normal file
14
content/en/docs/lorem/ipsum/amet/consectetur/index.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Consectetur"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T20:17:32+01:00
|
||||
lastmod: 2022-01-18T20:17:32+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "amet"
|
||||
weight: 730
|
||||
toc: true
|
||||
---
|
14
content/en/docs/lorem/ipsum/dolor/index.md
Normal file
14
content/en/docs/lorem/ipsum/dolor/index.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Dolor"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T20:01:45+01:00
|
||||
lastmod: 2022-01-18T20:01:45+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "ipsum"
|
||||
weight: 700
|
||||
toc: true
|
||||
---
|
14
content/en/docs/lorem/ipsum/sit/index.md
Normal file
14
content/en/docs/lorem/ipsum/sit/index.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Sit"
|
||||
description: ""
|
||||
lead: ""
|
||||
date: 2022-01-18T20:05:19+01:00
|
||||
lastmod: 2022-01-18T20:05:19+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "ipsum"
|
||||
weight: 710
|
||||
toc: true
|
||||
---
|
10
content/en/docs/prologue/_index.md
Normal file
10
content/en/docs/prologue/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title : "Prologue"
|
||||
description: "Prologue Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
weight: 100
|
||||
---
|
112
content/en/docs/prologue/commands.md
Normal file
112
content/en/docs/prologue/commands.md
Normal file
@ -0,0 +1,112 @@
|
||||
---
|
||||
title: "Commands"
|
||||
description: "Doks comes with commands for common tasks."
|
||||
lead: "Doks comes with commands for common tasks."
|
||||
date: 2020-10-13T15:21:01+02:00
|
||||
lastmod: 2020-10-13T15:21:01+02:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "prologue"
|
||||
weight: 130
|
||||
toc: true
|
||||
---
|
||||
|
||||
{{< alert icon="💡" text="You can change the commands in the scripts section of `./package.json`." />}}
|
||||
|
||||
## create
|
||||
|
||||
Create new content for your site:
|
||||
|
||||
```bash
|
||||
npm run create [path] [flags]
|
||||
```
|
||||
|
||||
See also the Hugo docs: [hugo new](https://gohugo.io/commands/hugo_new/).
|
||||
|
||||
### Docs based tree
|
||||
|
||||
Create a docs based tree — with a single command:
|
||||
|
||||
```bash
|
||||
npm run create -- --kind docs [section]
|
||||
```
|
||||
|
||||
For example, create a docs based tree named guides:
|
||||
|
||||
```bash
|
||||
npm run create -- --kind docs guides
|
||||
```
|
||||
|
||||
## lint
|
||||
|
||||
Check scripts, styles, and markdown for errors:
|
||||
|
||||
```bash
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### scripts
|
||||
|
||||
Check scripts for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:scripts [-- --fix]
|
||||
```
|
||||
|
||||
### styles
|
||||
|
||||
Check styles for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:styles [-- --fix]
|
||||
```
|
||||
|
||||
### markdown
|
||||
|
||||
Check markdown for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:markdown [-- --fix]
|
||||
```
|
||||
|
||||
## clean
|
||||
|
||||
Delete temporary directories:
|
||||
|
||||
```bash
|
||||
npm run clean
|
||||
```
|
||||
|
||||
## start
|
||||
|
||||
Start local development server:
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## build
|
||||
|
||||
Build production website:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### functions
|
||||
|
||||
Build Lambda functions:
|
||||
|
||||
```bash
|
||||
npm run build:functions
|
||||
```
|
||||
|
||||
### preview
|
||||
|
||||
Build production website including draft and future content:
|
||||
|
||||
```bash
|
||||
npm run build:preview
|
||||
```
|
58
content/en/docs/prologue/introduction.md
Normal file
58
content/en/docs/prologue/introduction.md
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
title: "Introduction"
|
||||
description: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
|
||||
lead: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
|
||||
date: 2020-10-06T08:48:57+00:00
|
||||
lastmod: 2020-10-06T08:48:57+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "prologue"
|
||||
weight: 100
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Get started
|
||||
|
||||
There are two main ways to get started with Doks:
|
||||
|
||||
### Tutorial
|
||||
|
||||
{{< alert icon="👉" text="The Tutorial is intended for novice to intermediate users." />}}
|
||||
|
||||
Step-by-step instructions on how to start a new Doks project. [Tutorial →](https://getdoks.org/tutorial/introduction/)
|
||||
|
||||
### Quick Start
|
||||
|
||||
{{< alert icon="👉" text="The Quick Start is intended for intermediate to advanced users." />}}
|
||||
|
||||
One page summary of how to start a new Doks project. [Quick Start →]({{< relref "quick-start" >}})
|
||||
|
||||
## Go further
|
||||
|
||||
Recipes, Reference Guides, Extensions, and Showcase.
|
||||
|
||||
### Recipes
|
||||
|
||||
Get instructions on how to accomplish common tasks with Doks. [Recipes →](https://getdoks.org/docs/recipes/project-configuration/)
|
||||
|
||||
### Reference Guides
|
||||
|
||||
Learn how to customize Doks to fully make it your own. [Reference Guides →](https://getdoks.org/docs/reference-guides/security/)
|
||||
|
||||
### Extensions
|
||||
|
||||
Get instructions on how to add even more to Doks. [Extensions →](https://getdoks.org/docs/extensions/breadcrumb-navigation/)
|
||||
|
||||
### Showcase
|
||||
|
||||
See what others have build with Doks. [Showcase →](https://getdoks.org/showcase/electric-blocks/)
|
||||
|
||||
## Contributing
|
||||
|
||||
Find out how to contribute to Doks. [Contributing →](https://getdoks.org/docs/contributing/how-to-contribute/)
|
||||
|
||||
## Help
|
||||
|
||||
Get help on Doks. [Help →]({{< relref "how-to-update" >}})
|
79
content/en/docs/prologue/quick-start.md
Normal file
79
content/en/docs/prologue/quick-start.md
Normal file
@ -0,0 +1,79 @@
|
||||
---
|
||||
title: "Quick Start"
|
||||
description: "One page summary of how to start a new Doks project."
|
||||
lead: "One page summary of how to start a new Doks project."
|
||||
date: 2020-11-16T13:59:39+01:00
|
||||
lastmod: 2020-11-16T13:59:39+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "prologue"
|
||||
weight: 110
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Git](https://git-scm.com/) — latest source release
|
||||
- [Node.js](https://nodejs.org/) — latest LTS version or newer
|
||||
|
||||
{{< details "Why Node.js?" >}}
|
||||
Doks uses npm (included with Node.js) to centralize dependency management, making it [easy to update]({{< relref "how-to-update" >}}) resources, build tooling, plugins, and build scripts.
|
||||
{{< /details >}}
|
||||
|
||||
## Start a new Doks project
|
||||
|
||||
Create a new site, change directories, install dependencies, and start development server.
|
||||
|
||||
### Create a new site
|
||||
|
||||
Doks is available as a child theme and a starter theme.
|
||||
|
||||
#### Child theme
|
||||
|
||||
- Intended for novice to intermediate users
|
||||
- Intended for minor customizations
|
||||
- [Easily update npm packages]({{< relref "how-to-update" >}}) — __including__ [Doks](https://www.npmjs.com/package/@hyas/doks)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/h-enk/doks-child-theme.git my-doks-site
|
||||
```
|
||||
|
||||
#### Starter theme
|
||||
|
||||
- Intended for intermediate to advanced users
|
||||
- Intended for major customizations
|
||||
- [Easily update npm packages]({{< relref "how-to-update" >}})
|
||||
|
||||
```bash
|
||||
git clone https://github.com/h-enk/doks.git my-doks-site
|
||||
```
|
||||
|
||||
{{< details "Help me choose" >}}
|
||||
Not sure which one is for you? Pick the child theme.
|
||||
{{< /details >}}
|
||||
|
||||
### Change directories
|
||||
|
||||
```bash
|
||||
cd my-doks-site
|
||||
```
|
||||
|
||||
### Install dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
Doks will start the Hugo development webserver accessible by default at `http://localhost:1313`. Saved changes will live reload in the browser.
|
||||
|
||||
## Other commands
|
||||
|
||||
Doks comes with commands for common tasks. [Commands →]({{< relref "commands" >}})
|
36
content/en/privacy-policy/index.md
Normal file
36
content/en/privacy-policy/index.md
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "Privacy Policy"
|
||||
description: "We do not use cookies and we do not collect any personal data."
|
||||
date: 2020-08-27T19:23:18+02:00
|
||||
lastmod: 2020-08-27T19:23:18+02:00
|
||||
draft: true
|
||||
images: []
|
||||
---
|
||||
|
||||
__TLDR__: We do not use cookies and we do not collect any personal data.
|
||||
|
||||
## Website visitors
|
||||
|
||||
- No personal information is collected.
|
||||
- No information is stored in the browser.
|
||||
- No information is shared with, sent to or sold to third-parties.
|
||||
- No information is shared with advertising companies.
|
||||
- No information is mined and harvested for personal and behavioral trends.
|
||||
- No information is monetized.
|
||||
|
||||
### Information we collect and what we use it for
|
||||
|
||||
We run [Plausible](https://plausible.io/) analytics on getdoks.org. The following information is collected:
|
||||
|
||||
- __Page URL__. We track the page URL of each page view on this website. We use this to understand which pages have been viewed and how many times a particular page has been viewed. For example: _https://getdoks.org/_.
|
||||
- __HTTP Referrer__. We use the referrer string to understand the number of visitors referred to this website from links on other sites. For example: _https://github.com/_.
|
||||
- __Browser__. We use this to understand what browsers people use when visiting this website. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: _Chrome_.
|
||||
- __Operating system__. We use this to understand what operating systems people use when visiting this website. We only use the brand of the operating system and don’t include the version number or any other details. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: _GNU/Linux_.
|
||||
- __Device type__. We use this to understand what devices people use when visiting this website. This is derived from window.innerWidth. The actual width of the browser in pixels is discarded. For example: _Desktop_.
|
||||
- __Visitor Country__. We look up the visitor’s country using the IP address. We do not track anything more granular than the country of origin and the IP address of the visitor is discarded. We never store IP addresses in our database or logs. For example: _Canada_.
|
||||
|
||||
## Contact us
|
||||
|
||||
[Contact us]({{< relref "contact/index.md" >}}) if you have any questions.
|
||||
|
||||
Effective Date: _27th August 2020_
|
11
content/en/versions.md
Normal file
11
content/en/versions.md
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Versions"
|
||||
description: ""
|
||||
lead: "An appendix of hosted documentation for nearly every release of Doks, from v0 through v3."
|
||||
date: 2021-09-24T08:50:23+02:00
|
||||
lastmod: 2021-09-24T08:50:23+02:00
|
||||
draft: true
|
||||
images: []
|
||||
layout: versions
|
||||
url: "/docs/versions/"
|
||||
---
|
10
content/nl/_index.md
Normal file
10
content/nl/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title : "Modern documentatie-thema"
|
||||
description: "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard."
|
||||
lead: "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard."
|
||||
date: 2020-10-06T08:47:36+00:00
|
||||
lastmod: 2020-10-06T08:47:36+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
10
content/nl/contact/index.md
Normal file
10
content/nl/contact/index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Contact"
|
||||
description: "Drop us an email."
|
||||
date: 2020-08-27T19:25:12+02:00
|
||||
lastmod: 2020-08-27T19:25:12+02:00
|
||||
draft: true
|
||||
images: []
|
||||
---
|
||||
|
||||
{{< email user="hello" domain="getdoks.org" >}}
|
10
content/nl/contributors/_index.md
Normal file
10
content/nl/contributors/_index.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Contributors"
|
||||
description: "The Doks contributors."
|
||||
date: 2020-10-06T08:50:29+00:00
|
||||
lastmod: 2020-10-06T08:50:29+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
||||
The Doks contributors.
|
12
content/nl/contributors/henk-verlinde/_index.md
Normal file
12
content/nl/contributors/henk-verlinde/_index.md
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Henk Verlinde"
|
||||
description: "Creator of Hyas."
|
||||
date: 2020-10-06T08:50:45+00:00
|
||||
lastmod: 2020-10-06T08:50:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
|
||||
Creator of Hyas.
|
||||
|
||||
[@HenkVerlinde](https://twitter.com/henkverlinde)
|
9
content/nl/docs/_index.md
Normal file
9
content/nl/docs/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title : "Docs"
|
||||
description: "Docs Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:23+00:00
|
||||
lastmod: 2020-10-06T08:48:23+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
9
content/nl/docs/help/_index.md
Normal file
9
content/nl/docs/help/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Help"
|
||||
description: "Help Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:49:15+00:00
|
||||
lastmod: 2020-10-06T08:49:15+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
50
content/nl/docs/help/faq.md
Normal file
50
content/nl/docs/help/faq.md
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "FAQ"
|
||||
description: "Answers to frequently asked questions."
|
||||
lead: "Answers to frequently asked questions."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 630
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Hyas?
|
||||
|
||||
Doks is a [Hyas theme](https://gethyas.com/themes/) build by the creator of Hyas.
|
||||
|
||||
## Footer notice?
|
||||
|
||||
Please keep it in place.
|
||||
|
||||
## Keyboard shortcuts for search?
|
||||
|
||||
- focus: `Ctrl + /`
|
||||
- select: `↓` and `↑`
|
||||
- open: `Enter`
|
||||
- close: `Esc`
|
||||
|
||||
## Other documentation?
|
||||
|
||||
- [Netlify](https://docs.netlify.com/)
|
||||
- [Hugo](https://gohugo.io/documentation/)
|
||||
|
||||
## Can I get support?
|
||||
|
||||
Create a topic:
|
||||
|
||||
- [Netlify Community](https://community.netlify.com/)
|
||||
- [Hugo Forums](https://discourse.gohugo.io/)
|
||||
- [Doks Discussions](https://github.com/h-enk/doks/discussions)
|
||||
|
||||
## Contact the creator?
|
||||
|
||||
Send `h-enk` a message:
|
||||
|
||||
- [Netlify Community](https://community.netlify.com/)
|
||||
- [Hugo Forums](https://discourse.gohugo.io/)
|
||||
- [Doks Discussions](https://github.com/h-enk/doks/discussions)
|
32
content/nl/docs/help/how-to-update.md
Normal file
32
content/nl/docs/help/how-to-update.md
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "How to Update"
|
||||
description: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
|
||||
lead: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
|
||||
date: 2020-11-12T13:26:54+01:00
|
||||
lastmod: 2020-11-12T13:26:54+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 610
|
||||
toc: true
|
||||
---
|
||||
|
||||
{{< alert icon="💡" text="Learn more about <a href=\"https://docs.npmjs.com/about-semantic-versioning\">semantic versioning</a> and <a href=\"https://docs.npmjs.com/cli/v6/using-npm/semver#advanced-range-syntax\">advanced range syntax</a>." />}}
|
||||
|
||||
## Check for outdated packages
|
||||
|
||||
The [`npm outdated`](https://docs.npmjs.com/cli/v7/commands/npm-outdated) command will check the registry to see if any (or, specific) installed packages are currently outdated:
|
||||
|
||||
```bash
|
||||
npm outdated [[<@scope>/]<pkg> ...]
|
||||
```
|
||||
|
||||
## Update packages
|
||||
|
||||
The [`npm update`](https://docs.npmjs.com/cli/v7/commands/npm-update) command will update all the packages listed to the latest version (specified by the tag config), respecting semver:
|
||||
|
||||
```bash
|
||||
npm update [<pkg>...]
|
||||
```
|
30
content/nl/docs/help/troubleshooting.md
Normal file
30
content/nl/docs/help/troubleshooting.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "Troubleshooting"
|
||||
description: "Solutions to common problems."
|
||||
lead: "Solutions to common problems."
|
||||
date: 2020-11-12T15:22:20+01:00
|
||||
lastmod: 2020-11-12T15:22:20+01:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 620
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Problems updating npm packages
|
||||
|
||||
Delete the `./node_modules` folder, and run again:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Problems with cache
|
||||
|
||||
Delete the temporary directories:
|
||||
|
||||
```bash
|
||||
npm run clean
|
||||
```
|
9
content/nl/docs/prologue/_index.md
Normal file
9
content/nl/docs/prologue/_index.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title : "Prologue"
|
||||
description: "Prologue Doks."
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
---
|
98
content/nl/docs/prologue/commands.md
Normal file
98
content/nl/docs/prologue/commands.md
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
title: "Commands"
|
||||
description: "Doks comes with commands for common tasks."
|
||||
lead: "Doks comes with commands for common tasks."
|
||||
date: 2020-10-13T15:21:01+02:00
|
||||
lastmod: 2020-10-13T15:21:01+02:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "prologue"
|
||||
weight: 130
|
||||
toc: true
|
||||
---
|
||||
|
||||
{{< alert icon="💡" text="You can change the commands in the scripts section of `./package.json`." />}}
|
||||
|
||||
## create
|
||||
|
||||
Create new content for your site:
|
||||
|
||||
```bash
|
||||
npm run create [path] [flags]
|
||||
```
|
||||
|
||||
See also the Hugo docs: [hugo new](https://gohugo.io/commands/hugo_new/).
|
||||
|
||||
## lint
|
||||
|
||||
Check scripts, styles, and markdown for errors:
|
||||
|
||||
```bash
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### scripts
|
||||
|
||||
Check scripts for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:scripts [-- --fix]
|
||||
```
|
||||
|
||||
### styles
|
||||
|
||||
Check styles for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:styles [-- --fix]
|
||||
```
|
||||
|
||||
### markdown
|
||||
|
||||
Check markdown for errors:
|
||||
|
||||
```bash
|
||||
npm run lint:markdown [-- --fix]
|
||||
```
|
||||
|
||||
## clean
|
||||
|
||||
Delete temporary directories:
|
||||
|
||||
```bash
|
||||
npm run clean
|
||||
```
|
||||
|
||||
## start
|
||||
|
||||
Start local development server:
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## build
|
||||
|
||||
Build production website:
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### functions
|
||||
|
||||
Build Lambda functions:
|
||||
|
||||
```bash
|
||||
npm run build:functions
|
||||
```
|
||||
|
||||
### preview
|
||||
|
||||
Build production website including draft and future content:
|
||||
|
||||
```bash
|
||||
npm run build:preview
|
||||
```
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user