From 20082e969f2fe7c9c970d31e9b1ba3e4baddeec3 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Wed, 5 Jan 2022 22:10:25 +0100 Subject: [PATCH] initial proof of concept idea: write markdown, get a more-or-less readable with categories and search because no one wants to deal with wikis (or just use fd & rg locally, I guess). Add docs to `content/`; all subdirs of that need a _index.md file that defines the theme. Categories are just strings and can be defined ad-hoc; the search goes through all files in `content/` and subdirs based on a search index built by zola when building the site. --- .gitignore | 1 + .gitlab-ci.yml | 14 +++ config.toml | 31 ++++++ content/_index.md | 7 ++ content/fifth.md | 10 ++ content/first.md | 17 ++++ content/fourth.md | 11 ++ content/second.md | 10 ++ content/subdir/_index.md | 7 ++ content/subdir/sixth.md | 55 ++++++++++ content/subdir/third.md | 10 ++ sass/style.scss | 168 +++++++++++++++++++++++++++++++ static/ShareTech-Regular.ttf | Bin 0 -> 29536 bytes static/favicon.png | Bin 0 -> 3798 bytes static/favicon_color.png | Bin 0 -> 5334 bytes static/search.js | 52 ++++++++++ templates/base.html | 43 ++++++++ templates/blog.html | 12 +++ templates/categories/list.html | 16 +++ templates/categories/single.html | 12 +++ templates/doc-page.html | 15 +++ templates/index.html | 14 +++ templates/post_macros.html | 15 +++ 23 files changed, 520 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 config.toml create mode 100644 content/_index.md create mode 100644 content/fifth.md create mode 100644 content/first.md create mode 100644 content/fourth.md create mode 100644 content/second.md create mode 100644 content/subdir/_index.md create mode 100644 content/subdir/sixth.md create mode 100644 content/subdir/third.md create mode 100644 sass/style.scss create mode 100644 static/ShareTech-Regular.ttf create mode 100644 static/favicon.png create mode 100644 static/favicon_color.png create mode 100644 static/search.js create mode 100644 templates/base.html create mode 100644 templates/blog.html create mode 100644 templates/categories/list.html create mode 100644 templates/categories/single.html create mode 100644 templates/doc-page.html create mode 100644 templates/index.html create mode 100644 templates/post_macros.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46f5006 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8ad77a8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,14 @@ +image: alpine:latest + +pages: + script: + # this uses alpine, for whatever reason + - apk add --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ zola + - zola build + + artifacts: + paths: + - public + + only: + - main diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..7a47bc5 --- /dev/null +++ b/config.toml @@ -0,0 +1,31 @@ +# The URL the site will be built for +base_url = "https://hacc.4future.dev/hacc/infra/docs-zola" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = true + +default_language = "en" + +generate_feed = true +feed_filename = "atom.xml" + +taxonomies = [ + { name = "categories", feed = false}, +] + +[markdown] +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola +highlight_code = true + +[extra] +# Put all your custom variables here +main_title = "haccfiles documentation" + +main_menu = [ + {url = "$BASE_URL", name = "Home"}, + {url = "$BASE_URL/categories", name = "Categories"} +] diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..a2f2784 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,7 @@ ++++ +page_template = "doc-page.html" +paginate_by = 10 +#insert_anchor_links = "left" ++++ + + diff --git a/content/fifth.md b/content/fifth.md new file mode 100644 index 0000000..a6bc953 --- /dev/null +++ b/content/fifth.md @@ -0,0 +1,10 @@ ++++ +title = "My fifth post" +date = 2021-11-27 ++++ + +This is my fifth blog post. + +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, diff --git a/content/first.md b/content/first.md new file mode 100644 index 0000000..1ec4746 --- /dev/null +++ b/content/first.md @@ -0,0 +1,17 @@ ++++ +title = "hacc fortnight 2019-11-27" +date = 2019-11-27 ++++ + +This is my first blog post. + +[Lorem](https://hacc.earth) ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +```md +[Lorem](https://hacc.earth) +``` +```rust +let highlight = true; +``` + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, diff --git a/content/fourth.md b/content/fourth.md new file mode 100644 index 0000000..c58ee8a --- /dev/null +++ b/content/fourth.md @@ -0,0 +1,11 @@ ++++ +title = "My fourth post" +date = 2020-12-27 +taxonomies.categories = ["lorem"] ++++ + +This is my fourth blog post. + +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, diff --git a/content/second.md b/content/second.md new file mode 100644 index 0000000..dc7d700 --- /dev/null +++ b/content/second.md @@ -0,0 +1,10 @@ ++++ +title = "My second post" +date = 2020-11-27 ++++ + +This is my second blog post. + +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, diff --git a/content/subdir/_index.md b/content/subdir/_index.md new file mode 100644 index 0000000..a2f2784 --- /dev/null +++ b/content/subdir/_index.md @@ -0,0 +1,7 @@ ++++ +page_template = "doc-page.html" +paginate_by = 10 +#insert_anchor_links = "left" ++++ + + diff --git a/content/subdir/sixth.md b/content/subdir/sixth.md new file mode 100644 index 0000000..c2aff5d --- /dev/null +++ b/content/subdir/sixth.md @@ -0,0 +1,55 @@ ++++ +title = "this month in hacc | December 2021" +date = 2021-12-30 ++++ + +## Dept of Projects + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, + +## Dept of Events + +- Event 1 + - Awesome! + - Save the Date! +- Event 2 + - Save the Date , too! + + +## Dept of Collaboration + +adsf + +## Dept of Science +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, + +### ESA + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, + +### NASA +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, +asdf + +## Dept of Visualisation + +dfgh + +## Dept of Data + +asdasd + +## Dept of Infrastructure +[Lorem](https://hacc.earth) ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +```md +[Lorem](https://hacc.earth) +``` +```rust +let highlight = true; +``` + +## Dept of hacc e.V. +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, +asdf + diff --git a/content/subdir/third.md b/content/subdir/third.md new file mode 100644 index 0000000..1ca8062 --- /dev/null +++ b/content/subdir/third.md @@ -0,0 +1,10 @@ ++++ +title = "My third post" +date = 2020-11-29 ++++ + +This is my third blog post. + +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. + +Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, diff --git a/sass/style.scss b/sass/style.scss new file mode 100644 index 0000000..2fd384b --- /dev/null +++ b/sass/style.scss @@ -0,0 +1,168 @@ + +@font-face { + font-family: 'share-tech'; + src: url('ShareTech-Regular.ttf') format('truetype'); +} + +html { + overflow: hidden; + height: 100%; +} + +body { + background-color: #000; + color: #fff; + + overflow-y: auto; + overflow-x: hidden; + height: 100%; +} + +#content { + font-family: 'share-tech'; + margin-left: auto; + margin-right: auto; + max-width: 60em; + font-size: 16pt; + position: relative; +} + +p.subtitle { + font-size: 14pt; + font-style: normal; + color: gray; +} + +article { + margin-bottom: 4em; +} + +#searchresults { + width: 90%; + text-align: right; + right: 0; + position: absolute; + background-color: black; + top: 5em; + color: gray; +} + +#searchresults div { + padding: 0.5em; + border-top: 1px dashed gray; +} + +#searchresults div:last-child { + border-bottom: 1px dashed gray; +} + +.searchresultprevtext { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + width: 40em; + float: left; +} + +footer.content { + top: 50px; + color: #cccccc; + font-size: 14px; + margin-bottom: 4em; +} + +footer a { + color: #cccccc; +} + +.logo { + position: relative; + width: 100%; +} +.logo > img { + width: 300px; + max-width: 100%; +} + +h1 { + font-size: 32pt; +} + +#headernav { + text-align: right; + margin: 1em; +} + +#headernav > a { + padding: 0.2em; + font-size: 20pt; + font-family: share-tech; +} + +h1, h2, h3, h4, h5, h6{ + font-weight: 600; + display: inline; + font-family: share-tech; + background: rgb(59,115,185); + background: linear-gradient(90deg, rgb(59, 115, 185) 0%, rgb(229, 35, 33) 100%); + background-clip: border-box; + color: transparent; + -webkit-background-clip: text; + background-clip: text; +} +/* +h4 { + //font-weight: 600; + //display: inline; + font-family: share-tech; + //background: rgb(59,115,185); + //background: linear-gradient(90deg, rgb(59, 115, 185) 0%, rgb(229, 35, 33) 100%); + //background-clip: border-box; + color: #fff; + //-webkit-background-clip: text; + //background-clip: text; +} +*/ +a { + text-decoration: none; + color: #3b73b9; + transition: color .1s linear; +} +a:hover { + /*color: #e52321;*/ + color: #4e9af9; +} + +ul { + margin-top: 0; +} + + +pre { + padding: 1rem; + overflow: auto; + font-size: 16px; +} +// The line numbers already provide some kind of left/right padding +pre[data-linenos] { + padding: 1rem 0; +} +pre table td { + padding: 0; +} +// The line number cells +pre table td:nth-of-type(1) { + text-align: center; + user-select: none; +} +pre mark { + // If you want your highlights to take the full width. + display: block; + // The default background colour of a mark is bright yellow + background-color: rgba(254, 252, 232, 0.9); +} +pre table { + width: 100%; + border-collapse: collapse; +} diff --git a/static/ShareTech-Regular.ttf b/static/ShareTech-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..787ba839aaf259b220c4360211ca6a71536cccdd GIT binary patch literal 29536 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 literal 0 HcmV?d00001 diff --git a/static/search.js b/static/search.js new file mode 100644 index 0000000..183095d --- /dev/null +++ b/static/search.js @@ -0,0 +1,52 @@ + +function mkDiv (res) { + let div = document.createElement("div"); + let a = document.createElement("a"); + a.innerText = res.doc.title; + a.href = res.ref; + let text = document.createElement("span"); + text.innerText = res.doc.body.slice(0,400).replaceAll("\n", " "); + text.classList.add("searchresultprevtext"); + + div.appendChild(text); + div.appendChild(a); + return div; +} + +window.onload = () => { + console.log("hello!") + let searchbox = document.getElementById("searchbox"); + searchbox.innerHTML = + " \ + "; + + let searchinput = document.getElementById("searchinput"); + let searchresults = document.getElementById("searchresults"); + + let index = elasticlunr.Index.load(window.searchIndex); + + searchinput.addEventListener("keyup", () => { + let term = searchinput.value.trim(); + let results = []; + if (term !== "") { + results = index.search(term, {}); + console.log(results); + + while (searchresults.lastChild) { + searchresults.removeChild(searchresults.lastChild) + } + if (results.length !== 0) { + let resultdivs = results.map(mkDiv); + resultdivs.map((div) => searchresults.appendChild(div)); + } else { + searchresults.innerHTML = + term.length <= 4 ? + "
Need at least four characters to search.
" + : "
No results here.
"; + } + searchresults.style.display = "initial"; + } else { + searchresults.style.display = "none"; + } + }); +} diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..07f0a78 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,43 @@ + + + + + {{ config.extra.main_title }} + + + + + + + {% block head_extra %} + {% endblock head_extra %} + + +
+
+

{{ config.extra.main_title }}

+ +
+ + {% block content %} {% endblock %} + + + +
+ + diff --git a/templates/blog.html b/templates/blog.html new file mode 100644 index 0000000..63775bc --- /dev/null +++ b/templates/blog.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block content %} +

+ {{ section.title }} +

+ +{% endblock content %} diff --git a/templates/categories/list.html b/templates/categories/list.html new file mode 100644 index 0000000..56ae338 --- /dev/null +++ b/templates/categories/list.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% block content %} +
+ +

Categories

+ + {% if terms %} +
    + {% for term in terms %} +
  • {{ term.name }} ({{ term.pages | length }})
  • + {% endfor %} +
+ {% endif %} +
+{% endblock content %} diff --git a/templates/categories/single.html b/templates/categories/single.html new file mode 100644 index 0000000..40ef984 --- /dev/null +++ b/templates/categories/single.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% import "post_macros.html" as post_macros %} +{% block content %} + +

Posts in category "{{ term.name }}"

+

+ {% for page in term.pages %} +

{{ page.title }}

+ {% endfor %} +

+{% endblock content %} diff --git a/templates/doc-page.html b/templates/doc-page.html new file mode 100644 index 0000000..f433657 --- /dev/null +++ b/templates/doc-page.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% import "post_macros.html" as post_macros %} +{% block content %} +
+ +
+{% endblock content %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..22b89a0 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% import "post_macros.html" as post_macros %} +{% block content %} +
+ + {% for page in paginator.pages %} +

+

{{ page.title }}

+

+ {% endfor %} + {{ post_macros::paginator_nav(paginator=paginator) }} +
+{% endblock content %} diff --git a/templates/post_macros.html b/templates/post_macros.html new file mode 100644 index 0000000..1fb7e9b --- /dev/null +++ b/templates/post_macros.html @@ -0,0 +1,15 @@ +{% macro paginator_nav(paginator) %} + + + +{% endmacro paginator_nav %}