Compare commits
50 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
d2e0968784 | |
![]() |
e253048ed6 | |
![]() |
aaf42bf2af | |
![]() |
a1fb274782 | |
![]() |
cac7e18341 | |
![]() |
6d2df35f95 | |
![]() |
478a5a7d07 | |
![]() |
d9977756a6 | |
![]() |
7a49e2bbd4 | |
![]() |
77971af475 | |
![]() |
62cc830930 | |
![]() |
193ffc9967 | |
![]() |
c7234c1589 | |
![]() |
cc623cb688 | |
![]() |
0f0af88444 | |
![]() |
ef5c5838d4 | |
![]() |
80f6ecbb1b | |
![]() |
0da8732896 | |
![]() |
ecb10e5512 | |
![]() |
c774adba0e | |
![]() |
459eb1d813 | |
![]() |
1eea4e5f01 | |
![]() |
d295e24ced | |
![]() |
4bfe090c90 | |
![]() |
738db3e0a4 | |
![]() |
3ba33c63d7 | |
![]() |
97b0428583 | |
![]() |
504c4815be | |
![]() |
f718190103 | |
![]() |
4fc71d4103 | |
![]() |
539dbf80a4 | |
![]() |
93b8671792 | |
![]() |
18515b4ca7 | |
![]() |
1bb1dab866 | |
![]() |
89605e4767 | |
![]() |
72985c2ada | |
![]() |
3ef7149bd7 | |
![]() |
be0dc0aa7d | |
![]() |
39b76591d5 | |
![]() |
6140ca1917 | |
![]() |
475a2408f6 | |
![]() |
68e6d34421 | |
![]() |
b82e8b6354 | |
![]() |
afc3b1c15e | |
![]() |
57e89aec4a | |
![]() |
e2bb139f39 | |
![]() |
aad8147d63 | |
![]() |
0af7e8c401 | |
![]() |
6d9e3cab0a | |
![]() |
9a2e2dcbc8 |
|
@ -3,6 +3,7 @@
|
||||||
"rules": {
|
"rules": {
|
||||||
"element-required-content": "off",
|
"element-required-content": "off",
|
||||||
"element-permitted-content": "off",
|
"element-permitted-content": "off",
|
||||||
"no-raw-characters": "off"
|
"no-raw-characters": "off",
|
||||||
|
"attribute-misuse": "warn"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,15 @@ ci:
|
||||||
"is-crawlable",
|
"is-crawlable",
|
||||||
"image-size-responsive",
|
"image-size-responsive",
|
||||||
"render-blocking-resources",
|
"render-blocking-resources",
|
||||||
"largest-contentful-paint"
|
"largest-contentful-paint",
|
||||||
|
"unused-css-rules",
|
||||||
|
"network-dependency-tree-insight",
|
||||||
|
"legacy-javascript",
|
||||||
|
"errors-in-console",
|
||||||
|
"max-potential-fid",
|
||||||
|
"interactive",
|
||||||
|
"dom-size",
|
||||||
|
"forced-reflow-insight"
|
||||||
]
|
]
|
||||||
assert:
|
assert:
|
||||||
preset: "lighthouse:no-pwa"
|
preset: "lighthouse:no-pwa"
|
||||||
|
@ -33,6 +41,14 @@ ci:
|
||||||
image-size-responsive: off
|
image-size-responsive: off
|
||||||
render-blocking-resources: off
|
render-blocking-resources: off
|
||||||
largest-contentful-paint: off
|
largest-contentful-paint: off
|
||||||
|
unused-css-rules: off
|
||||||
|
network-dependency-tree-insight: off
|
||||||
|
legacy-javascript: off
|
||||||
|
errors-in-console: off
|
||||||
|
max-potential-fid: off
|
||||||
|
interactive: off
|
||||||
|
dom-size: off
|
||||||
|
forced-reflow-insight: off
|
||||||
total-byte-weight: warn
|
total-byte-weight: warn
|
||||||
identical-links-same-purpose: warn
|
identical-links-same-purpose: warn
|
||||||
tap-targets: warn
|
tap-targets: warn
|
||||||
|
|
|
@ -44,7 +44,7 @@ steps:
|
||||||
- event: [pull_request]
|
- event: [pull_request]
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
image: quay.io/thegeeklab/hugo:0.144
|
image: quay.io/thegeeklab/hugo:0.148
|
||||||
commands:
|
commands:
|
||||||
- hugo --panicOnWarning -s exampleSite/
|
- hugo --panicOnWarning -s exampleSite/
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ steps:
|
||||||
FORCE_COLOR: "true"
|
FORCE_COLOR: "true"
|
||||||
|
|
||||||
- name: testbuild
|
- name: testbuild
|
||||||
image: quay.io/thegeeklab/hugo:0.144
|
image: quay.io/thegeeklab/hugo:0.148
|
||||||
depends_on: [assets]
|
depends_on: [assets]
|
||||||
commands:
|
commands:
|
||||||
- mkdir -p exampleSite/themes/ && ln -s $(pwd)/ exampleSite/themes/${CI_REPO_NAME}
|
- mkdir -p exampleSite/themes/ && ln -s $(pwd)/ exampleSite/themes/${CI_REPO_NAME}
|
||||||
|
@ -44,9 +44,12 @@ steps:
|
||||||
depends_on: [testbuild]
|
depends_on: [testbuild]
|
||||||
commands:
|
commands:
|
||||||
- lychee --no-progress --format detailed exampleSite/content/ README.md
|
- lychee --no-progress --format detailed exampleSite/content/ README.md
|
||||||
|
environment:
|
||||||
|
GITHUB_TOKEN:
|
||||||
|
from_secret: github_token_ro
|
||||||
|
|
||||||
- name: page-validation
|
- name: page-validation
|
||||||
image: quay.io/thegeeklab/lhci:0.14
|
image: quay.io/thegeeklab/lhci:0.15
|
||||||
depends_on: [testbuild]
|
depends_on: [testbuild]
|
||||||
commands:
|
commands:
|
||||||
- lhci autorun
|
- lhci autorun
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
|
[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
|
||||||
[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
|
[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
|
||||||
|
|
||||||
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of good alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
|
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of great alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ geekdocAnchor: false
|
||||||
|
|
||||||
<!-- markdownlint-restore -->
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of got alternatives out there.
|
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of great alternatives out there.
|
||||||
|
|
||||||
{{< button size="large" relref="usage/getting-started/" >}}Getting Started{{< /button >}}
|
{{< button size="large" relref="usage/getting-started/" >}}Getting Started{{< /button >}}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ The minimal steps to load a custom Favicon is to overwrite the three default Fav
|
||||||
|
|
||||||
### Full replacement
|
### Full replacement
|
||||||
|
|
||||||
If you want to add more Favicon formats you have to [overwrite](https://gohugo.io/templates/partials/#partial-template-lookup-order) the default partial that is used to load the files. In the next step you have to place the required files in the `static` folder of your project as well.
|
If you want to add more Favicon formats you have to [overwrite](https://gohugo.io/templates/lookup-order/) the default partial that is used to load the files. In the next step you have to place the required files in the `static` folder of your project as well.
|
||||||
|
|
||||||
**Example:**
|
**Example:**
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,9 @@ enableRobotsTXT = true
|
||||||
tag = "tags"
|
tag = "tags"
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
# (Optional, default none) Set a subtitle used in the page header.
|
||||||
|
geekdocSubtitle = "A Hugo theme for documentation"
|
||||||
|
|
||||||
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
||||||
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
|
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
|
||||||
# You can also specify this parameter per page in front matter.
|
# You can also specify this parameter per page in front matter.
|
||||||
|
@ -167,6 +170,9 @@ taxonomies:
|
||||||
tag: tags
|
tag: tags
|
||||||
|
|
||||||
params:
|
params:
|
||||||
|
# (Optional, default none) Set a subtitle used in the page header.
|
||||||
|
geekdocSubtitle: "A Hugo theme for documentation"
|
||||||
|
|
||||||
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
||||||
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
|
# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/)
|
||||||
# You can also specify this parameter per page in front matter.
|
# You can also specify this parameter per page in front matter.
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
title: Customization
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< toc >}}
|
||||||
|
|
||||||
|
## Custom resources
|
||||||
|
|
||||||
|
To add custom resources to your site e.g. CSS or JavaScript files, create the `layouts/partials/head/custom.html` in the root directory of your project. Add the source files you want to include in the `static/` folder of your project, for example `static/css/custom.css` and `static/js/custom.js`. To include the files in your site, add the following code to `layouts/partials/head/custom.html`:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/custom.css" />
|
||||||
|
<script type="text/javascript" src="/js/custom.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensure to use the absolute path to the files.
|
|
@ -1,6 +0,0 @@
|
||||||
{{ if default true .Site.Params.geekdocSearch }}
|
|
||||||
<script defer src="{{ index (index .Site.Data.assets "search.js") "src" | relURL }}"></script>
|
|
||||||
{{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
|
|
||||||
{{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
|
|
||||||
{{- $searchConfig.Publish -}}
|
|
||||||
{{ end }}
|
|
|
@ -1 +1,9 @@
|
||||||
<!-- You can add custom elements to the page header here. -->
|
<!--
|
||||||
|
You can add custom elements to the page header here.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
Ensure to use the absolute path to custom files and place the source files in the `static` folder.
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/custom.css">
|
||||||
|
<script type="text/javascript" src="/custom.js"></script>
|
||||||
|
-->
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
<svg class="gdoc-icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
|
<svg class="gdoc-icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
|
||||||
<a
|
<a
|
||||||
href="{{ $geekdocRepo }}/{{ path.Join $geekdocEditPath ($.Scratch.Get "geekdocFilePath") }}"
|
href="{{ $geekdocRepo }}/{{ path.Join $geekdocEditPath ($.Scratch.Get "geekdocFilePath") }}"
|
||||||
|
rel="edit"
|
||||||
>
|
>
|
||||||
{{ i18n "edit_page" }}
|
{{ i18n "edit_page" }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{{ if default true .Site.Params.geekdocSearch }}
|
{{ if default true .Site.Params.geekdocSearch }}
|
||||||
|
<script defer src="{{ index (index .Site.Data.assets "search.js") "src" | relURL }}"></script>
|
||||||
|
{{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
|
||||||
|
{{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
|
||||||
|
{{- $searchConfig.Publish -}}
|
||||||
|
|
||||||
<div class="gdoc-search flex align-center">
|
<div class="gdoc-search flex align-center">
|
||||||
<svg class="gdoc-icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
|
<svg class="gdoc-icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
|
||||||
<input
|
<input
|
||||||
|
|
|
@ -17,15 +17,18 @@
|
||||||
</label>
|
</label>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div>
|
<div>
|
||||||
<a class="gdoc-brand gdoc-header__link" href="{{ .Root.Site.Home.Permalink }}">
|
<a class="gdoc-brand gdoc-header__link flex gap-16 align-center" href="{{ .Root.Site.Home.Permalink }}">
|
||||||
<span class="flex align-center">
|
<img
|
||||||
<img
|
class="gdoc-brand__img"
|
||||||
class="gdoc-brand__img"
|
src="{{ (default "brand.svg" .Root.Site.Params.geekdocLogo) | relURL }}"
|
||||||
src="{{ (default "brand.svg" .Root.Site.Params.geekdocLogo) | relURL }}"
|
alt=""
|
||||||
alt=""
|
/>
|
||||||
/>
|
<div>
|
||||||
<span class="gdoc-brand__title">{{ .Root.Site.Title }}</span>
|
<div class="gdoc-brand__title">{{ .Root.Site.Title }}</div>
|
||||||
</span>
|
{{ with .Root.Site.Params.geekdocSubtitle }}
|
||||||
|
<div class="gdoc-brand__subtitle">{{ . }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="gdoc-menu-header flex gap-16">
|
<div class="gdoc-menu-header flex gap-16">
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
|
@ -36,37 +36,37 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cfworker/json-schema": "4.1.1",
|
"@cfworker/json-schema": "4.1.1",
|
||||||
"clipboard": "2.0.11",
|
"clipboard": "2.0.11",
|
||||||
"flexsearch": "0.7.43",
|
"flexsearch": "0.8.205",
|
||||||
"katex": "0.16.21",
|
"katex": "0.16.22",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"mermaid": "11.5.0",
|
"mermaid": "11.9.0",
|
||||||
"store2": "2.14.4",
|
"store2": "2.14.4",
|
||||||
"uuid": "11.1.0"
|
"uuid": "11.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "7.26.10",
|
"@babel/eslint-parser": "7.28.0",
|
||||||
"autoprefixer": "10.4.21",
|
"autoprefixer": "10.4.21",
|
||||||
"copy-webpack-plugin": "13.0.0",
|
"copy-webpack-plugin": "13.0.0",
|
||||||
"css-loader": "7.1.2",
|
"css-loader": "7.1.2",
|
||||||
"eslint": "9.22.0",
|
"eslint": "9.31.0",
|
||||||
"eslint-config-prettier": "10.1.1",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-prettier": "5.2.3",
|
"eslint-plugin-prettier": "5.5.3",
|
||||||
"favicons": "7.2.0",
|
"favicons": "7.2.0",
|
||||||
"favicons-webpack-plugin": "6.0.1",
|
"favicons-webpack-plugin": "6.0.1",
|
||||||
"globals": "16.0.0",
|
"globals": "16.3.0",
|
||||||
"html-validate": "9.5.2",
|
"html-validate": "9.7.1",
|
||||||
"npm-run-all2": "7.0.2",
|
"npm-run-all2": "8.0.4",
|
||||||
"postcss-loader": "8.1.1",
|
"postcss-loader": "8.1.1",
|
||||||
"prettier": "3.5.3",
|
"prettier": "3.6.2",
|
||||||
"sass": "1.85.1",
|
"sass": "1.89.2",
|
||||||
"sass-loader": "16.0.5",
|
"sass-loader": "16.0.5",
|
||||||
"shx": "0.4.0",
|
"shx": "0.4.0",
|
||||||
"svg-sprite": "2.0.4",
|
"svg-sprite": "2.0.4",
|
||||||
"svgtofont": "6.3.1",
|
"svgtofont": "6.3.2",
|
||||||
"webpack": "5.98.0",
|
"webpack": "5.100.2",
|
||||||
"webpack-cli": "6.0.1",
|
"webpack-cli": "6.0.1",
|
||||||
"webpack-manifest-plugin": "5.0.1",
|
"webpack-manifest-plugin": "5.0.1",
|
||||||
"webpack-remove-empty-scripts": "1.0.4"
|
"webpack-remove-empty-scripts": "1.1.1"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"colors": "1.4.0"
|
"colors": "1.4.0"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import groupBy from "lodash/groupBy.js"
|
import groupBy from "lodash/groupBy.js"
|
||||||
import truncate from "lodash/truncate.js"
|
import truncate from "lodash/truncate.js"
|
||||||
import Document from "flexsearch/dist/module/document.js"
|
import { Document, Charset } from "flexsearch"
|
||||||
import { Validator } from "@cfworker/json-schema"
|
import { Validator } from "@cfworker/json-schema"
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
@ -55,7 +55,8 @@ function init(input, searchConfig) {
|
||||||
input.removeEventListener("focus", init)
|
input.removeEventListener("focus", init)
|
||||||
|
|
||||||
const indexCfgDefaults = {
|
const indexCfgDefaults = {
|
||||||
tokenize: "forward"
|
tokenize: "forward",
|
||||||
|
encoder: Charset.LatinBalance
|
||||||
}
|
}
|
||||||
const indexCfg = searchConfig.indexConfig ? searchConfig.indexConfig : indexCfgDefaults
|
const indexCfg = searchConfig.indexConfig ? searchConfig.indexConfig : indexCfgDefaults
|
||||||
const dataUrl = searchConfig.dataFile
|
const dataUrl = searchConfig.dataFile
|
||||||
|
@ -63,7 +64,7 @@ function init(input, searchConfig) {
|
||||||
indexCfg.document = {
|
indexCfg.document = {
|
||||||
key: "id",
|
key: "id",
|
||||||
index: ["title", "content", "description"],
|
index: ["title", "content", "description"],
|
||||||
store: ["title", "href", "parent", "description"]
|
store: ["title", "href", "parent", "content", "description"]
|
||||||
}
|
}
|
||||||
|
|
||||||
const index = new Document(indexCfg)
|
const index = new Document(indexCfg)
|
||||||
|
@ -79,7 +80,14 @@ function init(input, searchConfig) {
|
||||||
function search(input, results, searchConfig) {
|
function search(input, results, searchConfig) {
|
||||||
const searchCfg = {
|
const searchCfg = {
|
||||||
enrich: true,
|
enrich: true,
|
||||||
limit: 5
|
limit: 5,
|
||||||
|
highlight: {
|
||||||
|
template: "<b>$1</b>",
|
||||||
|
boundary: {
|
||||||
|
before: 10,
|
||||||
|
after: 20
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (results.firstChild) {
|
while (results.firstChild) {
|
||||||
|
@ -157,10 +165,23 @@ function createLinks(pages, target, showDesc) {
|
||||||
if (showDesc === true) {
|
if (showDesc === true) {
|
||||||
const desc = a.appendChild(document.createElement("span"))
|
const desc = a.appendChild(document.createElement("span"))
|
||||||
desc.classList.add("gdoc-search__entry--description")
|
desc.classList.add("gdoc-search__entry--description")
|
||||||
desc.textContent = truncate(page.description, {
|
|
||||||
length: 55,
|
if (page.highlight) {
|
||||||
separator: " "
|
const parser = new DOMParser()
|
||||||
})
|
const doc = parser.parseFromString(
|
||||||
|
truncate(page.highlight, {
|
||||||
|
length: 55,
|
||||||
|
separator: " "
|
||||||
|
}),
|
||||||
|
"text/html"
|
||||||
|
)
|
||||||
|
desc.innerHTML = doc.body.innerHTML
|
||||||
|
} else {
|
||||||
|
desc.textContent = truncate(page.description, {
|
||||||
|
length: 55,
|
||||||
|
separator: " "
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target) {
|
if (target) {
|
||||||
|
@ -206,6 +227,11 @@ function flattenHits(results) {
|
||||||
for (const page of field.result) {
|
for (const page of field.result) {
|
||||||
if (!map.has(page.doc.href)) {
|
if (!map.has(page.doc.href)) {
|
||||||
map.set(page.doc.href, true)
|
map.set(page.doc.href, true)
|
||||||
|
|
||||||
|
if (page.highlight) {
|
||||||
|
page.doc.highlight = page.highlight
|
||||||
|
}
|
||||||
|
|
||||||
items.push(page.doc)
|
items.push(page.doc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,14 +226,19 @@ svg.gdoc-icon {
|
||||||
}
|
}
|
||||||
|
|
||||||
.gdoc-brand {
|
.gdoc-brand {
|
||||||
font-size: defaults.$font-size-32;
|
|
||||||
line-height: defaults.$font-size-32;
|
|
||||||
|
|
||||||
&__img {
|
&__img {
|
||||||
margin-right: defaults.$padding-16;
|
|
||||||
width: defaults.$padding-32;
|
width: defaults.$padding-32;
|
||||||
height: defaults.$padding-32;
|
height: defaults.$padding-32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: defaults.$font-size-24;
|
||||||
|
line-height: defaults.$font-size-24;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: defaults.$font-size-12;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gdoc-menu-header {
|
.gdoc-menu-header {
|
||||||
|
|
Loading…
Reference in New Issue