forked from mirrors/hugo-theme-terminal
Compare commits
233 Commits
Author | SHA1 | Date | |
---|---|---|---|
8dee69d6f1 | |||
77db977cbb | |||
21cdda5eab | |||
bc8a948e9e | |||
4cfc615c58 | |||
630b79d3d3 | |||
078ea12d61 | |||
799ade2a15 | |||
a28d372103 | |||
84915ed87c | |||
48a59f7148 | |||
5a7235247c | |||
9cbdf7f76b | |||
8ef529a191 | |||
578cff2c4a | |||
cddbfdb6c8 | |||
52455fceeb | |||
ef0ab18dd9 | |||
788ab99b3d | |||
1e9ebfa7a0 | |||
4a26bc11a8 | |||
a44ecc8816 | |||
7e552cfc27 | |||
b824cb3172 | |||
7ebc190fa0 | |||
f501aea6c4 | |||
6978547538 | |||
1cfe36806b | |||
a318e42764 | |||
1610962731 | |||
e65726ee5a | |||
eb64ae3fd1 | |||
b868b1d08b | |||
d7e289572a | |||
b257fa2699 | |||
aad3300fb5 | |||
ce78519623 | |||
48846331ee | |||
e0213b0d4e | |||
7b430aaaca | |||
065f1a9f1e | |||
c98dfa6452 | |||
379dccdabc | |||
6f09541f75 | |||
60b9f3f4db | |||
32bac37f22 | |||
55e8a45109 | |||
9d458d193f | |||
1b3daa8aec | |||
993f39f58d | |||
6ad2d19be8 | |||
ded26b695f | |||
26acce9de7 | |||
2d6da429ad | |||
f90f088661 | |||
9ecbdfdb53 | |||
53b0ba4b1c | |||
4d31894966 | |||
f8743050da | |||
2f07661d54 | |||
df1fcb5b4e | |||
38b7e2d71a | |||
b396c7267f | |||
71b2d5731d | |||
f07873df21 | |||
2c980592fb | |||
c3cc15b3fb | |||
411fade4c6 | |||
0f3c3ce5a2 | |||
757870fc9f | |||
8c8b04f619 | |||
384671e682 | |||
14414168d7 | |||
1eb3288a62 | |||
9facb58364 | |||
a3dd8c11f0 | |||
cc1553f7ff | |||
b11b5bf012 | |||
1d8c831af4 | |||
e77948f3cd | |||
a634663b48 | |||
bfc300f4c8 | |||
553c9a0616 | |||
bf96fb25be | |||
b41381ea93 | |||
8b1529f4bb | |||
9833384a7b | |||
5737d557f4 | |||
466cd49b25 | |||
a9365185ba | |||
de6a660701 | |||
0b06a56093 | |||
be75e724a1 | |||
0c08f72167 | |||
bbaf93ff6f | |||
360673bedf | |||
2b0406b7a4 | |||
f851fbb769 | |||
fa5d7a4d42 | |||
49c865aee1 | |||
3dd3c40480 | |||
ae9c58f8e1 | |||
cd36a63fd0 | |||
e4b831ac6b | |||
c10d0fa757 | |||
25bae8dd53 | |||
cf980be3f4 | |||
f139a26426 | |||
7d58896abd | |||
1752bcca7d | |||
7773f26830 | |||
9fcd6f2e83 | |||
7eb29c4145 | |||
d2aba65c9a | |||
ec451ec43e | |||
ebf07a9cdd | |||
ca1cc0c391 | |||
b06ead7ef5 | |||
092dfc0601 | |||
3dd20f0986 | |||
ef0c8fef68 | |||
2383eeb774 | |||
67bb5735de | |||
61980c49d1 | |||
988d494e4b | |||
49c8fa1dae | |||
fe616cce37 | |||
e12f6caa63 | |||
aaaadafec9 | |||
9dd8459305 | |||
b4bf3b06c3 | |||
b4629bfaea | |||
89e499b402 | |||
6e3dff3351 | |||
58bfba3985 | |||
72673985a1 | |||
dc69c9059c | |||
30ad59dc69 | |||
8564ee33a1 | |||
175b1a7cb8 | |||
53a90e1e09 | |||
235f2a37ff | |||
2363670d7e | |||
e42dbd57ea | |||
2c5f161f65 | |||
ec4748863a | |||
de84c9b4c3 | |||
3032b81e82 | |||
8dc8e95747 | |||
fef6d938fd | |||
5092fa9a01 | |||
603898c30b | |||
a09a79ae4c | |||
3dd5709d70 | |||
24522eeec5 | |||
ce5fa4c87c | |||
090d7b2f19 | |||
5f53ba6b43 | |||
3c914ffcf7 | |||
229a3ead62 | |||
5e218c0b43 | |||
b09f2a4a14 | |||
194a49d39e | |||
220f8e590e | |||
3c4a093dbd | |||
0af87801a2 | |||
e446bafe36 | |||
e3e310b60d | |||
febf17a03d | |||
89f88607cc | |||
13aa8e777e | |||
2ff00f859a | |||
5f2dbe44e3 | |||
43a93652dd | |||
58c2d90f94 | |||
547a17a25f | |||
3882fb160a | |||
b0a8f3bd43 | |||
f3317dc327 | |||
feee0b5a1e | |||
58cf550908 | |||
30b7219a69 | |||
f0a5d6859e | |||
a5ef3ccc8b | |||
c3f51a4c11 | |||
60a15e7b38 | |||
1e46e9cdaf | |||
29200fe841 | |||
a6ca60fb7f | |||
4d71df019b | |||
480cb60150 | |||
78002c5029 | |||
4d617361a3 | |||
825fde486a | |||
28c44c93b1 | |||
9c4f402c4e | |||
12f249fd7c | |||
42eea54554 | |||
223b7536ce | |||
cb61741202 | |||
1756ef2edc | |||
d0284fd691 | |||
30d5681909 | |||
b572763b1f | |||
8e5c8d32dc | |||
bb344ddad7 | |||
08644e95c3 | |||
6856982e4a | |||
7ebb1d2776 | |||
54f156d2d5 | |||
0f2f3fc6be | |||
4a2f49d34b | |||
3523728e96 | |||
6a9b40ee12 | |||
4a20b34d61 | |||
85113381ea | |||
5685c97216 | |||
a749f3e3e6 | |||
b3437bc4dc | |||
654784a5c1 | |||
fae2e5f804 | |||
57b7a9cfc2 | |||
8710cb78b5 | |||
d20f756c21 | |||
3a7d4ad376 | |||
c3b01fb9ce | |||
4ade714a77 | |||
cbe39af196 | |||
d75ae3fae8 | |||
8b264b8f51 | |||
983b497ec7 | |||
2266ddfdd4 | |||
b95bb4ac1d |
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
_
|
4
.husky/pre-push
Executable file
4
.husky/pre-push
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
yarn build && git add . && git commit --amend --no-edit
|
@ -2,7 +2,6 @@ const url = require("postcss-url");
|
|||||||
const imports = require("postcss-import");
|
const imports = require("postcss-import");
|
||||||
const nested = require("postcss-nested");
|
const nested = require("postcss-nested");
|
||||||
const postCSSPresetEnv = require("postcss-preset-env");
|
const postCSSPresetEnv = require("postcss-preset-env");
|
||||||
const browsers = require("browserslist");
|
|
||||||
const cssnano = require("cssnano");
|
const cssnano = require("cssnano");
|
||||||
const color = require("postcss-color-mod-function");
|
const color = require("postcss-color-mod-function");
|
||||||
const mixins = require("postcss-mixins");
|
const mixins = require("postcss-mixins");
|
@ -16,6 +16,10 @@ eg:
|
|||||||
- John, a javascript developer.
|
- John, a javascript developer.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- **Social media icons** (https://github.com/...)
|
- **Portfolio** (https://github.com/Louisload/hugo-theme-terminal-portfolio)
|
||||||
- This is the biggest missing feature of the theme. But now it will help your audience reach you over the internet.
|
- Allows you to create a portfolio page (or several). Supports icons and subsections.
|
||||||
- John, a javascript developer.
|
- Luís Rodrigues Alves (Louisload), a game dev and musician.
|
||||||
|
|
||||||
|
- **Single Page Website** (https://github.com/justinnuwin/hugo-theme-terminal)
|
||||||
|
- A layout where the homepage can render lists of pages and the navigation menu can link to sections on the homepage.
|
||||||
|
- Justin Nguyen, software and hardware developer.
|
||||||
|
78
README.md
78
README.md
@ -4,8 +4,6 @@
|
|||||||
|
|
||||||
### DEMO - https://hugo-terminal.now.sh/
|
### DEMO - https://hugo-terminal.now.sh/
|
||||||
|
|
||||||
<a href="https://www.buymeacoffee.com/panr" target="_blank"><img src="https://res.cloudinary.com/panr/image/upload/v1579374705/buymeacoffee_y6yvov.svg" alt="Buy Me A Coffee" ></a>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
@ -20,24 +18,29 @@
|
|||||||
- [Found a bug?](#bug)
|
- [Found a bug?](#bug)
|
||||||
- [New cool idea or feature](#feature)
|
- [New cool idea or feature](#feature)
|
||||||
- [Terminal theme user?](#terminal-theme-user)
|
- [Terminal theme user?](#terminal-theme-user)
|
||||||
- [Sponsoring](#sponsoring)
|
|
||||||
- [Licence](#licence)
|
- [Licence](#licence)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **5 duetone themes**, depending on your preferences (orange is default, red, blue, green, pink)
|
- **5 duotone themes**, depending on your preferences (orange is default, red, blue, green, pink)
|
||||||
- [**Fira Code**](https://github.com/tonsky/FiraCode) as default monospaced font. It's gorgeous!
|
- [**Fira Code**](https://github.com/tonsky/FiraCode) as default monospaced font. It's gorgeous!
|
||||||
- **really nice duotone**, custom syntax highlighting based on [**PrismJS**](https://prismjs.com)
|
- **really nice duotone**, custom syntax highlighting based on [**PrismJS**](https://prismjs.com)
|
||||||
- fully responsive
|
- fully responsive
|
||||||
|
|
||||||
#### Built-in shortcodes
|
#### Built-in shortcodes
|
||||||
|
|
||||||
- **`image`** (prop required: **`src`**; props optional: **`alt`**, **`position`** (**left** is default | center | right), **`style`**)
|
- **`image`** (props required: **`src`**; props optional: **`alt`**, **`position`** (**left** is default | center | right), **`style`**)
|
||||||
- eg: `{{< image src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" >}}`
|
- e.g.
|
||||||
|
```go
|
||||||
|
{{< image src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" >}}
|
||||||
|
```
|
||||||
- **`figure`** (same as `image`, plus few optional props: **`caption`**, **`captionPosition`** (left | **center** is default | right), **`captionStyle`**)
|
- **`figure`** (same as `image`, plus few optional props: **`caption`**, **`captionPosition`** (left | **center** is default | right), **`captionStyle`**)
|
||||||
- eg: `{{< figure src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" caption="Hello Friend!" captionPosition="right" captionStyle="color: red;" >}}`
|
- e.g.
|
||||||
- **`code`** (prop required: **`language`**; props optional: **`title`**, **`id`**, **`expand`** (default "△"), **`collapse`** (default "▽"), **`isCollapsed`**)
|
```go
|
||||||
- eg:
|
{{< figure src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" caption="Hello Friend!" captionPosition="right" captionStyle="color: red;" >}}
|
||||||
|
```
|
||||||
|
- **`code`** (props required: **`language`**; props optional: **`title`**, **`id`**, **`expand`** (default "△"), **`collapse`** (default "▽"), **`isCollapsed`**)
|
||||||
|
- e.g.
|
||||||
```go
|
```go
|
||||||
{{< code language="css" title="Really cool snippet" id="1" expand="Show" collapse="Hide" isCollapsed="true" >}}
|
{{< code language="css" title="Really cool snippet" id="1" expand="Show" collapse="Hide" isCollapsed="true" >}}
|
||||||
pre {
|
pre {
|
||||||
@ -72,7 +75,7 @@ A custom syntax highlighting based on PrismJS. All you need to do is to wrap you
|
|||||||
```
|
```
|
||||||
````
|
````
|
||||||
|
|
||||||
**Supported languages**: bash/shell, css, clike, javascript, apacheconf, actionscript, applescript, c, csharp, cpp, coffeescript, ruby, csp, css-extras, diff, django, docker, elixir, elm, markup-templating, erlang, fsharp, flow, git, go, graphql, less, handlebars, haskell, http, java, json, kotlin, latex, markdown, makefile, objectivec, ocaml, perl, php, php-extras, r, sql, processing, scss, python, jsx, typescript, toml, reason, textile, rust, sass, stylus, scheme, pug, swift, yaml, haml, twig, tsx, vim, visual-basic, wasm.
|
**Supported languages**: actionscript, apacheconf, applescript, bash, c, clike, cmake, coffeescript, cpp, csharp, csp, css, css-extras, diff, django, docker, elixir, elm, erlang, flow, fsharp, git, go, graphql, haml, handlebars, haskell, http, java, javascript, json, jsx, kotlin, latex, less, llvm, makefile, markdown, markup, markup-templating, nasm, objectivec, ocaml, perl, php, php-extras, powershell, processing, pug, python, r, reason, ruby, rust, sass, scala, scheme, scss, sql, stylus, swift, textile, toml, tsx, twig, typescript, vim, visual-basic, wasm, yaml.
|
||||||
|
|
||||||
## How to start
|
## How to start
|
||||||
|
|
||||||
@ -81,13 +84,13 @@ You can download the theme manually by going to [https://github.com/panr/hugo-th
|
|||||||
You can also clone it directly to your Hugo folder:
|
You can also clone it directly to your Hugo folder:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git clone https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
git clone -b webpack https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't want to make any radical changes, it's the best option, because you can get new updates when they are available. You can also include it as a git submodule:
|
If you don't want to make any radical changes, it's the best option, because you can get new updates when they are available. You can also include it as a git submodule:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git submodule add https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
git submodule add -b webpack -f https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
||||||
```
|
```
|
||||||
|
|
||||||
⚠️ **The theme needs at least Hugo version 0.74.x**.
|
⚠️ **The theme needs at least Hugo version 0.74.x**.
|
||||||
@ -97,7 +100,7 @@ $ git submodule add https://github.com/panr/hugo-theme-terminal.git themes/termi
|
|||||||
If you installed all needed `npm` dependencies, then you can run:
|
If you installed all needed `npm` dependencies, then you can run:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ hugo server -t terminal
|
hugo server -t terminal
|
||||||
```
|
```
|
||||||
|
|
||||||
and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time.
|
and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time.
|
||||||
@ -132,18 +135,35 @@ paginate = 5
|
|||||||
# center theme with default width
|
# center theme with default width
|
||||||
centerTheme = false
|
centerTheme = false
|
||||||
|
|
||||||
# set a custom favicon (default is a `themeColor` square)
|
# if your resource directory contains an image called `cover.(jpg|png|webp)`,
|
||||||
# favicon = "favicon.ico"
|
# then the file will be used as a cover automatically.
|
||||||
|
# With this option you don't have to put the `cover` param in a front-matter.
|
||||||
|
autoCover = true
|
||||||
|
|
||||||
# set post to show the last updated
|
# set post to show the last updated
|
||||||
# If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated
|
# If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated
|
||||||
showLastUpdated = false
|
showLastUpdated = false
|
||||||
|
|
||||||
|
# set a custom favicon (default is a `themeColor` square)
|
||||||
|
# favicon = "favicon.ico"
|
||||||
|
|
||||||
# Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author
|
# Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author
|
||||||
# updatedDatePrefix = "Updated"
|
# updatedDatePrefix = "Updated"
|
||||||
|
|
||||||
# set all headings to their default size (depending on browser settings)
|
# set all headings to their default size (depending on browser settings)
|
||||||
# it's set to `true` by default
|
# oneHeadingSize = true # default
|
||||||
# oneHeadingSize = false
|
|
||||||
|
# whether to show a page's estimated reading time
|
||||||
|
# readingTime = false # default
|
||||||
|
|
||||||
|
# whether to show a table of contents
|
||||||
|
# can be overridden in a page's front-matter
|
||||||
|
# Toc = false # default
|
||||||
|
|
||||||
|
# set title for the table of contents
|
||||||
|
# can be overridden in a page's front-matter
|
||||||
|
# TocTitle = "Table of Contents" # default
|
||||||
|
|
||||||
|
|
||||||
[params.twitter]
|
[params.twitter]
|
||||||
# set Twitter handles for Twitter cards
|
# set Twitter handles for Twitter cards
|
||||||
@ -163,6 +183,8 @@ paginate = 5
|
|||||||
menuMore = "Show more"
|
menuMore = "Show more"
|
||||||
readMore = "Read more"
|
readMore = "Read more"
|
||||||
readOtherPosts = "Read other posts"
|
readOtherPosts = "Read other posts"
|
||||||
|
newerPosts = "Newer posts"
|
||||||
|
olderPosts = "Older posts"
|
||||||
missingContentMessage = "Page not found..."
|
missingContentMessage = "Page not found..."
|
||||||
missingBackButtonLabel = "Back to home page"
|
missingBackButtonLabel = "Back to home page"
|
||||||
|
|
||||||
@ -187,7 +209,7 @@ to `config.toml` file in your Hugo root directory and change params fields. In c
|
|||||||
|
|
||||||
## Post archetype
|
## Post archetype
|
||||||
|
|
||||||
See the basic `post` file params supported by the theme — https://github.com/panr/hugo-theme-terminal/blob/master/archetypes/posts.md
|
See the default `post` file params supported by the theme — https://github.com/panr/hugo-theme-terminal/blob/master/archetypes/posts.md
|
||||||
|
|
||||||
## Add-ons
|
## Add-ons
|
||||||
|
|
||||||
@ -204,27 +226,27 @@ To change something directly in the theme, you have to go to `themes/terminal` a
|
|||||||
First, you need to install Node dependencies. To do so, go to the theme directory (from your Hugo root directory):
|
First, you need to install Node dependencies. To do so, go to the theme directory (from your Hugo root directory):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cd themes/terminal
|
cd themes/terminal
|
||||||
```
|
```
|
||||||
|
|
||||||
then run:
|
then run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ npm install
|
npm install
|
||||||
$ npm i yarn
|
npm i yarn
|
||||||
$ yarn
|
yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
After you modified the files you can run webpack in watch mode:
|
After you modified the files you can run webpack in watch mode:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ yarn dev
|
yarn dev
|
||||||
```
|
```
|
||||||
|
|
||||||
or rebuild theme
|
or rebuild theme
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ yarn build
|
yarn build
|
||||||
```
|
```
|
||||||
|
|
||||||
To see the changes (remember to restart `hugo server`).
|
To see the changes (remember to restart `hugo server`).
|
||||||
@ -254,14 +276,8 @@ Sounds OK? Cool, let's rock! 🤘
|
|||||||
|
|
||||||
I'd be happy to know more about you and what you are doing. If you want to share it, please make a contribution and [add your site to the list](https://github.com/panr/hugo-theme-terminal/blob/master/USERS.md)! 🤗
|
I'd be happy to know more about you and what you are doing. If you want to share it, please make a contribution and [add your site to the list](https://github.com/panr/hugo-theme-terminal/blob/master/USERS.md)! 🤗
|
||||||
|
|
||||||
## Sponsoring
|
|
||||||
|
|
||||||
If you like my work and want to support the development of the project, now you can! Just:
|
|
||||||
|
|
||||||
<a href="https://www.buymeacoffee.com/panr" target="_blank"><img src="https://res.cloudinary.com/panr/image/upload/v1579374705/buymeacoffee_y6yvov.svg" alt="Buy Me A Coffee" ></a>
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright © 2019-2020 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
Copyright © 2019-2022 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
||||||
|
|
||||||
The theme is released under the MIT License. Check the [original theme license](https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md) for additional licensing information.
|
The theme is released under the MIT License. Check the [original theme license](https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md) for additional licensing information.
|
||||||
|
42
USERS.md
42
USERS.md
@ -22,7 +22,6 @@
|
|||||||
- https://security.jtang.dev **Jonathan Tang** (Student & Software Engineer)
|
- https://security.jtang.dev **Jonathan Tang** (Student & Software Engineer)
|
||||||
- https://andreacaravano.net **Andrea Caravano** (Student)
|
- https://andreacaravano.net **Andrea Caravano** (Student)
|
||||||
- https://dawsonverboven.com/ **Dawson Verboven** (Student & Software Developer)
|
- https://dawsonverboven.com/ **Dawson Verboven** (Student & Software Developer)
|
||||||
- https://www.rockyourcode.com **Sophia Brandt** (tax officer and hobby coder)
|
|
||||||
- https://qbunt.com **Jeremy Bunting** (Software Engineer)
|
- https://qbunt.com **Jeremy Bunting** (Software Engineer)
|
||||||
- https://smeik.org **Smeik** (Embedded Developer)
|
- https://smeik.org **Smeik** (Embedded Developer)
|
||||||
- https://code.willstocks.co.uk **Will Stocks** (Blogger & Developer)
|
- https://code.willstocks.co.uk **Will Stocks** (Blogger & Developer)
|
||||||
@ -30,14 +29,45 @@
|
|||||||
- https://m47r1x.github.io **Neo** (Citizen of Zion)
|
- https://m47r1x.github.io **Neo** (Citizen of Zion)
|
||||||
- https://bgameiro.me/ **Bernardo Gameiro** (Engineer Physicist student)
|
- https://bgameiro.me/ **Bernardo Gameiro** (Engineer Physicist student)
|
||||||
- https://return-to-libc.com/ **elraro** (Cyber Security Specialist)
|
- https://return-to-libc.com/ **elraro** (Cyber Security Specialist)
|
||||||
- https://waterloos.niflheimr.blue/ **niflheimr1011** (Aspiring Software Engineer)
|
- https://pablart.com/ **Pablo Diaz-Gutierrez** (Software Engineer, General Tinkerer)
|
||||||
|
- https://waterloos.niflheimr.blue/ **cindrmon** (Student and Aspiring Software Engineer)
|
||||||
- https://monocle.rpod.club/ **classx** (DevOps Engineer)
|
- https://monocle.rpod.club/ **classx** (DevOps Engineer)
|
||||||
- https://wjdevschool.com/ **Wojciech Bogócki** (Making Things & Teaching / W&J Dev School)
|
- https://wjdevschool.com/ **Wojciech Bogócki** (Making Things & Teaching / W&J Dev School)
|
||||||
- https://waterloos.niflheimr.blue/ **cindrmon** (Aspiring Software Engineer and Student)
|
- https://dongzhi.me **Joe** (Software Developer)
|
||||||
|
- https://isaes.com.tr/ **Isa Es** (Software Engineer)
|
||||||
|
- https://conight.com **Conight Wang** (Software Engineer)
|
||||||
|
- https://blog.m5e.de/ **Christoph Miksche** (Software Developer)
|
||||||
|
- https://mpostument.com/ **Maksym Postument** (DevOps Engineer)
|
||||||
|
- https://mathiejosh.xyz **Josh Mathie** (Electrical Engineering Technology Student/Sales and Engineering Tech)
|
||||||
|
- https://yuji.ne.jp/ **YUJI** (Student & Software Developer)
|
||||||
|
- https://blog.puvvadi.me **KD Puvvadi** (Software Dev & Cloud Orchestrator)
|
||||||
|
- https://hidden.land/ **Louisload** (Game Developer & Musician)
|
||||||
|
- https://linuxbase.nl **Michael Trip** (DevOps Engineer)
|
||||||
|
- https://markopolo123.github.io **Markopolo** (DevOps Engineer)
|
||||||
|
- https://openfoxblog.leven.dev/ **Damon Leven** (Student & Software Developer)
|
||||||
|
- https://blog.sethforprivacy.com **Seth For Privacy** (Security, privacy, and cryptocurrency writer, podcaster)
|
||||||
|
- https://thesprawl.city **crish** (Software and stuff)
|
||||||
|
- https://justinnuwin.com **Justin Nguyen** (Software & Hardware Developer)
|
||||||
|
- https://blog.woosal.com/ **Vusal Ismayilov** (Computer Engineering Student)
|
||||||
|
- https://itsembedded.com/ **Norbert Kremeris** (digital logic design and verification engineer)
|
||||||
|
- https://nereuxofficial.github.io **Nereuxofficial** (Software Developer & Student)
|
||||||
|
- https://biplav.xyz **Biplav's Blog** (Student)
|
||||||
|
- https://santiago.wtf **Nicholas Santiago** (DevOps Engineer)
|
||||||
|
- https://2200g.github.io/ **2200g** (Blogger/Student)
|
||||||
|
- https://cristiioan.me **Cristian Margine** (Student)
|
||||||
|
- https://they.mint.lgbt **Joey Aliaga** (Software Developer & Student)
|
||||||
|
- https://tatewilhelm.me **Tate Wilhelm** (Student, Programmer & Tinkerer)
|
||||||
|
- https://mikefoden.com **Mike Foden** (Software Developer)
|
||||||
|
- https://undemalum.github.io/portfolio/ **Mateusz Konat** (Student)
|
||||||
|
- https://ku0hn.radio **Ben Kuhn** (Ham Radio Operator, InfoSec Engineer, Tinkerer)
|
||||||
|
- https://bg117.xyz/projects **bg117** (Student and Hobby Programmer)
|
||||||
|
- https://www.grumpymetalguy.com **GrumpyMetalGuy** (General Grumper and Developer)
|
||||||
|
- https://blog.jontes.page **Jonte** (general tech geek)
|
||||||
|
- https://nazdarthegame.com/ **Michal Skoula** (Software Developer)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
TEMPLATE:
|
TEMPLATE:
|
||||||
|
|
||||||
- https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer)
|
- https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer)
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
+++
|
+++
|
||||||
title = ""
|
title = "{{ replace .TranslationBaseName "-" " " | title }}"
|
||||||
date = ""
|
date = "{{ .Date }}"
|
||||||
author = ""
|
author = ""
|
||||||
authorTwitter = "" #do not include @
|
authorTwitter = "" #do not include @
|
||||||
cover = ""
|
cover = ""
|
||||||
@ -8,4 +8,6 @@ tags = ["", ""]
|
|||||||
keywords = ["", ""]
|
keywords = ["", ""]
|
||||||
description = ""
|
description = ""
|
||||||
showFullContent = false
|
showFullContent = false
|
||||||
|
readingTime = false
|
||||||
|
hideComments = false
|
||||||
+++
|
+++
|
||||||
|
@ -15,12 +15,19 @@ a.button {
|
|||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 8px;
|
border-radius: 0;
|
||||||
border: 1px solid transparent;
|
border: 1px solid var(--accent);
|
||||||
|
background: var(--accent);
|
||||||
|
font: inherit;
|
||||||
|
font-weight: bold;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
outline: none;
|
outline: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: color-mod(var(--accent) a(90%));
|
||||||
|
}
|
||||||
|
|
||||||
/* variants */
|
/* variants */
|
||||||
|
|
||||||
&.outline {
|
&.outline {
|
||||||
@ -34,20 +41,11 @@ a.button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.primary {
|
|
||||||
box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 2px 6px rgba(50, 50, 93, .21), 0 1px 3px rgba(0, 0, 0, .08);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.link {
|
&.link {
|
||||||
background: none;
|
background: none;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* sizes */
|
/* sizes */
|
||||||
|
|
||||||
&.small {
|
&.small {
|
||||||
@ -64,6 +62,8 @@ a.read-more,
|
|||||||
a.read-more:hover,
|
a.read-more:hover,
|
||||||
a.read-more:active {
|
a.read-more:active {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
border: none;
|
||||||
|
color: var(--accent);
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url("../fonts/FiraCode-Regular.woff") format("woff");
|
src: url("../fonts/FiraCode-Regular.woff") format("woff");
|
||||||
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
@ -12,4 +13,5 @@
|
|||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
src: url("../fonts/FiraCode-Bold.woff") format("woff");
|
src: url("../fonts/FiraCode-Bold.woff") format("woff");
|
||||||
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
30
assets/css/form.css
Normal file
30
assets/css/form.css
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
input, textarea, select {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--accent);
|
||||||
|
border: 1px solid var(--accent);
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 10px;
|
||||||
|
font: inherit;
|
||||||
|
appearance: none;
|
||||||
|
|
||||||
|
&:focus, :active {
|
||||||
|
border-color: var(--color);
|
||||||
|
outline: 1px solid var(--color);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
background: var(--background);
|
||||||
|
|
||||||
|
option {
|
||||||
|
background: var(--background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::placeholder {
|
||||||
|
color: color-mod(var(--accent) a(50%));
|
||||||
|
}
|
6
assets/css/gist.css
Normal file
6
assets/css/gist.css
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
body .gist .blob-num /* line numbers */,
|
||||||
|
body .gist .blob-code-inner
|
||||||
|
{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
@ -47,7 +47,7 @@
|
|||||||
.menu {
|
.menu {
|
||||||
--shadow-color: color-mod(var(--background) a(80%));
|
--shadow-color: color-mod(var(--background) a(80%));
|
||||||
--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 10px 10px var(--shadow-color);
|
--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 10px 10px var(--shadow-color);
|
||||||
margin: 20px 0;
|
margin: 20px 1px;
|
||||||
|
|
||||||
@media (--phone) {
|
@media (--phone) {
|
||||||
@mixin menu;
|
@mixin menu;
|
||||||
|
@ -19,7 +19,7 @@ body {
|
|||||||
color: var(--color);
|
color: var(--color);
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
|
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
|
||||||
font-variant-ligatures: contextual;
|
font-variant-ligatures: contextual;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
@ -128,7 +128,7 @@ figure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
code, kbd {
|
code, kbd {
|
||||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;
|
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||||
font-feature-settings: normal;
|
font-feature-settings: normal;
|
||||||
background: color-mod(var(--accent) a(20%));
|
background: color-mod(var(--accent) a(20%));
|
||||||
color: var(--accent);
|
color: var(--accent);
|
||||||
@ -147,7 +147,7 @@ pre {
|
|||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
padding: 20px 10px;
|
padding: 20px 10px;
|
||||||
margin: 40px 0;
|
margin: 40px 0;
|
||||||
font-size: .95rem;
|
font-size: .95rem !important;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border-top: 1px solid rgba(255, 255, 255, .1);
|
border-top: 1px solid rgba(255, 255, 255, .1);
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
||||||
@ -228,7 +228,7 @@ blockquote {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
table-layout: fixed;
|
table-layout: auto;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 40px 0;
|
margin: 40px 0;
|
||||||
@ -247,7 +247,7 @@ th {
|
|||||||
|
|
||||||
ul,
|
ul,
|
||||||
ol {
|
ol {
|
||||||
margin-left: 30px;
|
margin-left: 22px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
@ -275,10 +275,18 @@ ol {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ol ol {
|
ol {
|
||||||
list-style-type: lower-alpha;
|
margin-left: 38px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
counter-increment: li;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:before {
|
||||||
|
content: counters(li, ".") " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mark {
|
mark {
|
||||||
@ -332,3 +340,7 @@ hr {
|
|||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
line-height: 0;
|
||||||
|
}
|
||||||
|
@ -1,19 +1,17 @@
|
|||||||
/* PrismJS 1.15.0
|
/* PrismJS 1.24.1
|
||||||
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+c+csharp+bash+cpp+coffeescript+ruby+csp+css-extras+diff+django+docker+elixir+elm+markup-templating+erlang+fsharp+flow+git+go+graphql+less+handlebars+haskell+http+java+json+kotlin+latex+markdown+makefile+objectivec+ocaml+perl+php+php-extras+sql+processing+scss+python+jsx+typescript+reason+textile+rust+sass+stylus+scheme+pug+swift+yaml+haml+toml+twig+tsx+vim+visual-basic+wasm&plugins=line-numbers+toolbar+jsonp-highlight+command-line+copy-to-clipboard */
|
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */
|
||||||
/**
|
/**
|
||||||
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
|
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
|
||||||
* Based on https://github.com/chriskempson/tomorrow-theme
|
* Based on https://github.com/chriskempson/tomorrow-theme
|
||||||
* @author Rose Pritchard
|
* @author Rose Pritchard
|
||||||
*/
|
*/
|
||||||
|
|
||||||
:root {
|
|
||||||
--code-margin: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
code[class*="language-"],
|
code[class*="language-"],
|
||||||
pre[class*="language-"] {
|
pre[class*="language-"] {
|
||||||
|
color: #ccc;
|
||||||
background: none;
|
background: none;
|
||||||
font-family: inherit, monospace;
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
font-size: 1em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
word-spacing: normal;
|
word-spacing: normal;
|
||||||
@ -21,30 +19,94 @@ pre[class*="language-"] {
|
|||||||
word-wrap: normal;
|
word-wrap: normal;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
|
|
||||||
tab-size: 2;
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
hyphens: none;
|
hyphens: none;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Code blocks */
|
/* Code blocks */
|
||||||
pre[class*="language-"] {
|
pre[class*="language-"] {
|
||||||
margin: 0;
|
padding: 1em;
|
||||||
padding: 0;
|
margin: .5em 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
:not(pre) > code[class*="language-"],
|
:not(pre) > code[class*="language-"],
|
||||||
pre[class*="language-"] {
|
pre[class*="language-"] {
|
||||||
border-radius: 0;
|
background: #2d2d2d;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inline code */
|
/* Inline code */
|
||||||
:not(pre) > code[class*="language-"] {
|
:not(pre) > code[class*="language-"] {
|
||||||
padding: .1em;
|
padding: .1em;
|
||||||
border-radius: 0;
|
border-radius: .3em;
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.block-comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.tag,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted {
|
||||||
|
color: #e2777a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function-name {
|
||||||
|
color: #6196cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.function {
|
||||||
|
color: #f08d49;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: #f8c555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.important,
|
||||||
|
.token.atrule,
|
||||||
|
.token.keyword,
|
||||||
|
.token.builtin {
|
||||||
|
color: #cc99cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.regex,
|
||||||
|
.token.variable {
|
||||||
|
color: #7ec699;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url {
|
||||||
|
color: #67cdcc;
|
||||||
|
}
|
||||||
|
|
||||||
.token.important,
|
.token.important,
|
||||||
.token.bold {
|
.token.bold {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -57,6 +119,81 @@ pre[class*="language-"] {
|
|||||||
cursor: help;
|
cursor: help;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.token.inserted {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[data-line] {
|
||||||
|
position: relative;
|
||||||
|
padding: 1em 0 1em 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: inherit 0;
|
||||||
|
margin-top: 1em; /* Same as .prism’s padding-top */
|
||||||
|
|
||||||
|
background: hsla(24, 20%, 50%,.08);
|
||||||
|
background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
|
||||||
|
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
line-height: inherit;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
.line-highlight {
|
||||||
|
/*
|
||||||
|
* This will prevent browsers from replacing the background color with white.
|
||||||
|
* It's necessary because the element is layered on top of the displayed code.
|
||||||
|
*/
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
color-adjust: exact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight:before,
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-start);
|
||||||
|
position: absolute;
|
||||||
|
top: .4em;
|
||||||
|
left: .6em;
|
||||||
|
min-width: 1em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
background-color: hsla(24, 20%, 50%,.4);
|
||||||
|
color: hsl(24, 20%, 95%);
|
||||||
|
font: bold 65%/1.5 sans-serif;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: .3em;
|
||||||
|
border-radius: 999px;
|
||||||
|
text-shadow: none;
|
||||||
|
box-shadow: 0 1px white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-highlight[data-end]:after {
|
||||||
|
content: attr(data-end);
|
||||||
|
top: auto;
|
||||||
|
bottom: .4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-numbers .line-highlight:before,
|
||||||
|
.line-numbers .line-highlight:after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
|
||||||
|
background-color: rgba(128, 128, 128, .2);
|
||||||
|
}
|
||||||
|
|
||||||
pre[class*="language-"].line-numbers {
|
pre[class*="language-"].line-numbers {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 3.8em;
|
padding-left: 3.8em;
|
||||||
@ -76,103 +213,27 @@ pre[class*="language-"].line-numbers > code {
|
|||||||
left: -3.8em;
|
left: -3.8em;
|
||||||
width: 3em; /* works for line-numbers below 1000 lines */
|
width: 3em; /* works for line-numbers below 1000 lines */
|
||||||
letter-spacing: -1px;
|
letter-spacing: -1px;
|
||||||
border-right: 1px solid color-mod(var(--accent) blend(#999 90%) a(20%));
|
border-right: 1px solid #999;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.line-numbers-rows > span {
|
.line-numbers-rows > span {
|
||||||
pointer-events: none;
|
|
||||||
display: block;
|
|
||||||
counter-increment: linenumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line-numbers-rows > span:before {
|
|
||||||
content: counter(linenumber);
|
|
||||||
color: color-mod(var(--accent) blend(#999 90%) a(40%));
|
|
||||||
display: block;
|
|
||||||
padding-right: 0.8em;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.code-toolbar {
|
|
||||||
position: relative;
|
|
||||||
margin: var(--code-margin) 0;
|
|
||||||
padding: 20px;
|
|
||||||
border: 1px solid rgba(255, 255, 255, .1);
|
|
||||||
|
|
||||||
+ .code-toolbar,
|
|
||||||
+ .highlight,
|
|
||||||
+ .highlight .code-toolbar {
|
|
||||||
border-top: 0;
|
|
||||||
margin-top: calc(-1 * var(--code-margin));
|
|
||||||
}
|
|
||||||
|
|
||||||
pre, code {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
display: block;
|
display: block;
|
||||||
color: inherit;
|
counter-increment: linenumber;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.highlight + .highlight .code-toolbar {
|
.line-numbers-rows > span:before {
|
||||||
border-top: 0;
|
content: counter(linenumber);
|
||||||
margin-top: calc(-1 * var(--code-margin));
|
color: #999;
|
||||||
}
|
display: block;
|
||||||
|
padding-right: 0.8em;
|
||||||
div.code-toolbar > .toolbar {
|
text-align: right;
|
||||||
position: absolute;
|
}
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
transition: opacity 0.3s ease-in-out;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar:hover > .toolbar {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar > .toolbar .toolbar-item {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar > .toolbar a {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar > .toolbar button {
|
|
||||||
background: none;
|
|
||||||
border: 0;
|
|
||||||
color: inherit;
|
|
||||||
font: inherit;
|
|
||||||
line-height: normal;
|
|
||||||
overflow: visible;
|
|
||||||
padding: 0;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar > .toolbar a,
|
|
||||||
div.code-toolbar > .toolbar button,
|
|
||||||
div.code-toolbar > .toolbar span {
|
|
||||||
color: #bbb;
|
|
||||||
font-size: .8em;
|
|
||||||
padding: 10px;
|
|
||||||
background: #f5f2f0;
|
|
||||||
background: rgba(224, 224, 224, 0.2);
|
|
||||||
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-toolbar > .toolbar a:hover,
|
|
||||||
div.code-toolbar > .toolbar a:focus,
|
|
||||||
div.code-toolbar > .toolbar button:hover,
|
|
||||||
div.code-toolbar > .toolbar button:focus,
|
|
||||||
div.code-toolbar > .toolbar span:hover,
|
|
||||||
div.code-toolbar > .toolbar span:focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.command-line-prompt {
|
.command-line-prompt {
|
||||||
border-right: 1px solid #999;
|
border-right: 1px solid #999;
|
||||||
@ -182,10 +243,15 @@ div.code-toolbar > .toolbar span:focus {
|
|||||||
letter-spacing: -1px;
|
letter-spacing: -1px;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.command-line-prompt > span:before {
|
.command-line-prompt > span:before {
|
||||||
|
color: #999;
|
||||||
content: ' ';
|
content: ' ';
|
||||||
display: block;
|
display: block;
|
||||||
padding-right: 0.8em;
|
padding-right: 0.8em;
|
||||||
@ -202,3 +268,69 @@ div.code-toolbar > .toolbar span:focus {
|
|||||||
.command-line-prompt > span[data-prompt]:before {
|
.command-line-prompt > span[data-prompt]:before {
|
||||||
content: attr(data-prompt);
|
content: attr(data-prompt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.code-toolbar {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar {
|
||||||
|
position: absolute;
|
||||||
|
top: .3em;
|
||||||
|
right: .2em;
|
||||||
|
transition: opacity 0.3s ease-in-out;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar:hover > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Separate line b/c rules are thrown out if selector is invalid.
|
||||||
|
IE11 and old Edge versions don't support :focus-within. */
|
||||||
|
div.code-toolbar:focus-within > .toolbar {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button {
|
||||||
|
background: none;
|
||||||
|
border: 0;
|
||||||
|
color: inherit;
|
||||||
|
font: inherit;
|
||||||
|
line-height: normal;
|
||||||
|
overflow: visible;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: none; /* for button */
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span {
|
||||||
|
color: #bbb;
|
||||||
|
font-size: .8em;
|
||||||
|
padding: 0 .5em;
|
||||||
|
background: #f5f2f0;
|
||||||
|
background: rgba(224, 224, 224, 0.2);
|
||||||
|
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
|
||||||
|
border-radius: .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > a:focus,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > button:focus,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span:hover,
|
||||||
|
div.code-toolbar > .toolbar > .toolbar-item > span:focus {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
@import 'font.css';
|
@import 'font.css';
|
||||||
@import 'buttons.css';
|
@import 'buttons.css';
|
||||||
|
@import 'form.css';
|
||||||
|
|
||||||
@import 'header.css';
|
@import 'header.css';
|
||||||
@import 'logo.css';
|
@import 'logo.css';
|
||||||
@ -14,3 +15,4 @@
|
|||||||
@import 'syntax.css';
|
@import 'syntax.css';
|
||||||
@import 'code.css';
|
@import 'code.css';
|
||||||
@import 'terms.css';
|
@import 'terms.css';
|
||||||
|
@import 'gist.css';
|
||||||
|
@ -14,8 +14,10 @@ code.language-scss,
|
|||||||
.token.statement,
|
.token.statement,
|
||||||
.token.regex,
|
.token.regex,
|
||||||
.token.atrule,
|
.token.atrule,
|
||||||
.token.number {
|
.token.number,
|
||||||
color: var(--accent);
|
.token.inserted,
|
||||||
|
.token.important {
|
||||||
|
color: var(--accent) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.tag-id,
|
.token.tag-id,
|
||||||
@ -24,16 +26,25 @@ code.language-scss,
|
|||||||
.token.unit,
|
.token.unit,
|
||||||
.token.placeholder,
|
.token.placeholder,
|
||||||
.token.variable,
|
.token.variable,
|
||||||
.token.attr-name {
|
.token.tag,
|
||||||
color: color-mod(var(--accent) a(70%));
|
.token.attr-name,
|
||||||
|
.token.namespace,
|
||||||
|
.token.deleted,
|
||||||
|
.token.property,
|
||||||
|
.token.class-name,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol {
|
||||||
|
color: color-mod(var(--accent) a(70%)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.property,
|
.token.property,
|
||||||
.token.function,
|
.token.function,
|
||||||
|
.token.function-name,
|
||||||
|
.token.deleted,
|
||||||
code.language-javascript,
|
code.language-javascript,
|
||||||
code.language-html,
|
code.language-html,
|
||||||
.command-line-prompt > span:before {
|
.command-line-prompt > span:before {
|
||||||
color: color-mod(var(--accent) blend(#999 90%));
|
color: color-mod(var(--accent) blend(#999 90%)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.selector,
|
.token.selector,
|
||||||
@ -46,17 +57,23 @@ code.language-html,
|
|||||||
.token.prolog,
|
.token.prolog,
|
||||||
.token.doctype,
|
.token.doctype,
|
||||||
.token.cdata {
|
.token.cdata {
|
||||||
color: rgba(255, 255, 255, .3);
|
color: rgba(255, 255, 255, .3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.namespace {
|
.token.namespace {
|
||||||
opacity: .7;
|
opacity: .7 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre[data-line] {
|
pre[data-line] {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"] {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.line-highlight {
|
.line-highlight {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -97,3 +114,43 @@ pre[data-line] {
|
|||||||
.line-numbers .line-highlight:after {
|
.line-numbers .line-highlight:after {
|
||||||
content: none;
|
content: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--code-margin: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-toolbar {
|
||||||
|
position: relative;
|
||||||
|
margin: var(--code-margin) 0;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
|
+ .code-toolbar,
|
||||||
|
+ .highlight,
|
||||||
|
+ .highlight .code-toolbar {
|
||||||
|
border-top: 0;
|
||||||
|
margin-top: calc(-1 * var(--code-margin));
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
display: block;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .toolbar {
|
||||||
|
button {
|
||||||
|
font-size: .8em !important;
|
||||||
|
background: hsla(0,0%,87.8%,.2) !important;
|
||||||
|
color: #bbb !important;
|
||||||
|
box-shadow: 0 2px 0 0 rgba(0,0,0,.2) !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
margin: 6px !important;
|
||||||
|
padding: 10px !important;
|
||||||
|
user-select:none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -9,5 +9,5 @@
|
|||||||
--tabletWidth: (max-width: 900px);
|
--tabletWidth: (max-width: 900px);
|
||||||
}
|
}
|
||||||
|
|
||||||
@custom-media --phone (width < 684px);
|
@custom-media --phone (max-width: 684px);
|
||||||
@custom-media --tablet (width < 900px);
|
@custom-media --tablet (max-width: 900px);
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,18 +1,23 @@
|
|||||||
const mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");
|
const mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");
|
||||||
const isMobile = () => window.matchMedia(mobileQuery).matches;
|
const isMobile = () => window.matchMedia(mobileQuery).matches;
|
||||||
|
|
||||||
if(!isMobile()) {
|
const languageSelector = document.querySelector(".language-selector-current");
|
||||||
languageSelector = document.querySelector(".language-selector-current");
|
const moreLanguagesContainer = document.querySelector(".language-selector__more");
|
||||||
moreLanguagesContainer = document.querySelector(".language-selector__more");
|
|
||||||
|
|
||||||
document.body.addEventListener("click", () => {
|
document.body.addEventListener("click", () => {
|
||||||
if (moreLanguagesContainer && !moreLanguagesContainer.classList.contains("hidden")) {
|
if (
|
||||||
moreLanguagesContainer.classList.add("hidden");
|
!isMobile() &&
|
||||||
|
moreLanguagesContainer &&
|
||||||
|
!moreLanguagesContainer.classList.contains("hidden")
|
||||||
|
) {
|
||||||
|
moreLanguagesContainer.classList.add("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
languageSelector &&
|
||||||
|
languageSelector.addEventListener("click", (e) => {
|
||||||
|
if (!isMobile()) {
|
||||||
|
e.stopPropagation();
|
||||||
|
moreLanguagesContainer.classList.toggle("hidden");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
languageSelector && languageSelector.addEventListener("click", e => {
|
|
||||||
e.stopPropagation();
|
|
||||||
moreLanguagesContainer.classList.toggle("hidden");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -4,7 +4,7 @@ theme = "hugo-theme-terminal"
|
|||||||
paginate = 5
|
paginate = 5
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
contentTypeName = "post"
|
contentTypeName = "posts"
|
||||||
themeColor = "orange"
|
themeColor = "orange"
|
||||||
showMenuItems = 2
|
showMenuItems = 2
|
||||||
fullWidthTheme = false
|
fullWidthTheme = false
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
{{ partial "head.html" . }}
|
{{ partial "head.html" . }}
|
||||||
</head>
|
</head>
|
||||||
<body class="{{- ( or .Params.color $.Site.Params.ThemeColor ) -}}">
|
<body class="{{- ( or .Params.color $.Site.Params.ThemeColor ) -}}">
|
||||||
{{ $container := cond $.Site.Params.FullWidthTheme "container full" (cond $.Site.Params.CenterTheme "container center" "container") }}
|
{{ $container := cond ($.Site.Params.FullWidthTheme | default false) "container full" (cond ($.Site.Params.CenterTheme | default false) "container center" "container") }}
|
||||||
|
|
||||||
<div class="{{- $container -}}{{- cond ($.Site.Params.oneHeadingSize | default true) " headings--one-size" "" }}">
|
<div class="{{- $container -}}{{- cond ($.Site.Params.oneHeadingSize | default true) " headings--one-size" "" }}">
|
||||||
|
|
||||||
|
@ -15,14 +15,16 @@
|
|||||||
{{ $paginator := .Paginate (where $PageContext.RegularPages "Type" $contentTypeName) }}
|
{{ $paginator := .Paginate (where $PageContext.RegularPages "Type" $contentTypeName) }}
|
||||||
|
|
||||||
{{ range $paginator.Pages }}
|
{{ range $paginator.Pages }}
|
||||||
<div class="post on-list">
|
<article class="post on-list">
|
||||||
<h1 class="post-title">
|
<h1 class="post-title">
|
||||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||||
</h1>
|
</h1>
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
<span class="post-date">
|
{{- with .Date }}
|
||||||
{{ .Date.Format "2006-01-02" }}
|
<time class="post-date">
|
||||||
</span>
|
{{ .Format "2006-01-02" }}
|
||||||
|
</time>
|
||||||
|
{{- end }}
|
||||||
{{ with .Params.Author }}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">:: {{ . }}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@ -38,19 +40,17 @@
|
|||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if .Params.Cover }}
|
|
||||||
<img src="{{ .Params.Cover | absURL }}" class="post-cover" alt="{{ .Title | plainify | default " " }}" />
|
{{ partial "cover.html" . }}
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
{{ if .Params.showFullContent }}
|
{{ if .Params.showFullContent }}
|
||||||
{{ .Content | markdownify }}
|
{{ .Content }}
|
||||||
{{ else if .Description }}
|
{{ else if .Description }}
|
||||||
{{ .Description | markdownify }}
|
{{ .Description | markdownify }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ if .Truncated }}
|
{{ .Summary | markdownify }}
|
||||||
{{ .Summary | markdownify }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -60,7 +60,7 @@
|
|||||||
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ partial "pagination.html" . }}
|
{{ partial "pagination.html" . }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,15 +5,17 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="posts">
|
<div class="posts">
|
||||||
{{ range .Pages }}
|
{{ range .Paginator.Pages }}
|
||||||
<div class="post on-list">
|
<article class="post on-list">
|
||||||
<h1 class="post-title">
|
<h1 class="post-title">
|
||||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||||
</h1>
|
</h1>
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
<span class="post-date">
|
{{- with .Date }}
|
||||||
{{ .Date.Format "2006-01-02" }}
|
<time class="post-date">
|
||||||
</span>
|
{{ .Format "2006-01-02" }}
|
||||||
|
</time>
|
||||||
|
{{- end }}
|
||||||
{{ with .Params.Author }}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">:: {{ . }}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@ -29,19 +31,16 @@
|
|||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if .Params.Cover }}
|
{{ partial "cover.html" . }}
|
||||||
<img src="{{ .Params.Cover | absURL }}" class="post-cover" alt="{{ .Title | plainify | default " " }}" />
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
{{ if .Params.showFullContent }}
|
{{ if .Params.showFullContent }}
|
||||||
{{ .Content | markdownify }}
|
{{ .Content }}
|
||||||
{{ else if .Description }}
|
{{ else if .Description }}
|
||||||
{{ .Description | markdownify }}
|
{{ .Description | markdownify }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ if .Truncated }}
|
{{ .Summary }}
|
||||||
{{ .Summary | markdownify }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -51,7 +50,7 @@
|
|||||||
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ partial "pagination.html" . }}
|
{{ partial "pagination.html" . }}
|
||||||
</div>
|
</div>
|
||||||
|
40
layouts/_default/rss.xml
Normal file
40
layouts/_default/rss.xml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{{- $pctx := . -}}
|
||||||
|
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||||
|
{{- $pages := slice -}}
|
||||||
|
{{- if or $.IsHome $.IsSection -}}
|
||||||
|
{{- $pages = $pctx.RegularPages -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $pages = $pctx.Pages -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||||
|
{{- if ge $limit 1 -}}
|
||||||
|
{{- $pages = $pages | first $limit -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||||
|
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||||
|
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||||
|
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||||
|
{{- with .OutputFormats.Get "RSS" -}}
|
||||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ range $pages }}
|
||||||
|
<item>
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||||
|
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||||
|
<guid>{{ .Permalink }}</guid>
|
||||||
|
<description>{{ .Summary | html }}</description>
|
||||||
|
<content>{{ .Content | html }}</content>
|
||||||
|
</item>
|
||||||
|
{{ end }}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
@ -1,15 +1,21 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<div class="post">
|
<article class="post">
|
||||||
<h1 class="post-title">
|
<h1 class="post-title">
|
||||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
|
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
{{ if .Params.Date }}
|
{{ if .Params.Date }}
|
||||||
<span class="post-date">
|
<span class="post-date">
|
||||||
{{ .Date.Format "2006-01-02" }} {{ if $.Site.Params.showLastUpdated }}[{{or $.Site.Params.updatedDatePrefix "Updated"}}: {{ .Lastmod.Format "2006-01-02" }}]{{ end }}
|
<time>{{ .Date.Format "2006-01-02" }}</time>
|
||||||
|
{{ if $.Site.Params.showLastUpdated }}
|
||||||
|
[{{or $.Site.Params.updatedDatePrefix "Updated"}}: <time>{{ .Lastmod.Format "2006-01-02" }}</time>]
|
||||||
|
{{ end }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ with .Params.Author }}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">:: {{ . }}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ if and (.Param "readingTime") (eq (.Param "readingTime") true) }}
|
||||||
|
<span class="post-reading-time">:: {{ .ReadingTime }} min read ({{ .WordCount }} words)</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -20,21 +26,12 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ partial "cover.html" . }}
|
||||||
|
|
||||||
{{ if .Params.Cover }}
|
{{ if (.Params.Toc | default .Site.Params.Toc) }}
|
||||||
<img src="{{ .Params.Cover | absURL }}" class="post-cover" alt="{{ .Title | plainify | default " " }}" />
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if .Params.Toc }}
|
|
||||||
<div class="table-of-contents">
|
<div class="table-of-contents">
|
||||||
<h2>
|
<h2>
|
||||||
{{ if .Params.TocTitle }}
|
{{ (.Params.TocTitle | default .Site.Params.TocTitle) | default "Table of Contents" }}
|
||||||
{{ .Params.TocTitle }}
|
|
||||||
{{ else if $.Site.Params.TocTitle }}
|
|
||||||
{{ $.Site.Params.TocTitle }}
|
|
||||||
{{ else }}
|
|
||||||
Table of Contents
|
|
||||||
{{ end }}
|
|
||||||
</h2>
|
</h2>
|
||||||
{{ .TableOfContents }}
|
{{ .TableOfContents }}
|
||||||
</div>
|
</div>
|
||||||
@ -43,7 +40,7 @@
|
|||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
{{- with .Content -}}
|
{{- with .Content -}}
|
||||||
<div>
|
<div>
|
||||||
{{ . | replaceRE "(<h[1-9] id=\"([^\"]+)\".+)(</h[1-9]+>)" `${1}<a href="#${2}" class="hanchor" ariaLabel="Anchor">⌗</a> ${3}` | safeHTML }}
|
{{ . | replaceRE "(<h[1-9] id=\"([^\"]+)\".+)(</h[1-9]+>)" `${1}<a href="#${2}" class="hanchor" aria-label="Anchor">⌗</a> ${3}` | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</div>
|
</div>
|
||||||
@ -52,6 +49,8 @@
|
|||||||
{{ partial "posts_pagination.html" . }}
|
{{ partial "posts_pagination.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (.Params.hideComments | default false) }}
|
||||||
{{ partial "comments.html" . }}
|
{{ partial "comments.html" . }}
|
||||||
</div>
|
{{ end }}
|
||||||
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
24
layouts/partials/cover.html
Normal file
24
layouts/partials/cover.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{{- $cover := false -}}
|
||||||
|
{{- $autoCover := default $.Site.Params.autoCover false }}
|
||||||
|
|
||||||
|
{{- if index .Params "cover" -}}
|
||||||
|
{{- if .Resources.GetMatch .Params.Cover }}
|
||||||
|
{{- $cover = (.Resources.GetMatch .Params.Cover).RelPermalink -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $cover = absURL .Params.Cover -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else if $.Site.Params.AutoCover -}}
|
||||||
|
{{- if (not .Params.Cover) -}}
|
||||||
|
{{- if .Resources.GetMatch "cover.*" -}}
|
||||||
|
{{- $cover = (.Resources.GetMatch "cover.*").RelPermalink -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{if $cover -}}
|
||||||
|
<!-- Cover image found -->
|
||||||
|
<img src="{{ $cover }}"
|
||||||
|
class="post-cover"
|
||||||
|
alt="{{ .Title | plainify | default " " }}"
|
||||||
|
title="{{ .Params.CoverCredit |plainify|default "Cover Image" }}" />
|
||||||
|
{{- end }}
|
@ -3,10 +3,10 @@
|
|||||||
{{ if $.Site.Copyright }}
|
{{ if $.Site.Copyright }}
|
||||||
<div class="copyright copyright--user">
|
<div class="copyright copyright--user">
|
||||||
<span>{{ $.Site.Copyright | safeHTML }}</span>
|
<span>{{ $.Site.Copyright | safeHTML }}</span>
|
||||||
{{else}}
|
{{ else }}
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
<span>© {{ now.Year }} Powered by <a href="http://gohugo.io">Hugo</a></span>
|
<span>© {{ now.Year }} Powered by <a href="http://gohugo.io">Hugo</a></span>
|
||||||
{{end}}
|
{{ end }}
|
||||||
<span>:: Theme made by <a href="https://twitter.com/panr">panr</a></span>
|
<span>:: Theme made by <a href="https://twitter.com/panr">panr</a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -15,5 +15,9 @@
|
|||||||
<script src="{{ "assets/main.js" | absURL }}"></script>
|
<script src="{{ "assets/main.js" | absURL }}"></script>
|
||||||
<script src="{{ "assets/prism.js" | absURL }}"></script>
|
<script src="{{ "assets/prism.js" | absURL }}"></script>
|
||||||
|
|
||||||
|
{{ if $.Site.Params.showLanguageSelector }}
|
||||||
|
<script src="{{ "assets/languageSelector.js" | absURL }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<!-- Extended footer section-->
|
<!-- Extended footer section-->
|
||||||
{{ partial "extended_footer.html" . }}
|
{{ partial "extended_footer.html" . }}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="{{ if .IsHome }}{{ .Site.Params.Subtitle }}{{ else }}{{ .Summary | plainify }}{{ end }}" />
|
<meta name="description" content="{{ if .IsHome }}{{ $.Site.Params.Subtitle }}{{ else if .Description}}{{ .Description | plainify }}{{ else }}{{ .Summary | plainify }}{{ end }}" />
|
||||||
<meta name="keywords" content="{{ with .Params.Keywords }}{{ delimit . ", " }}{{ else }}{{ $.Site.Params.Keywords }}{{ end }}" />
|
<meta name="keywords" content="{{ with .Params.Keywords }}{{ delimit . ", " }}{{ else }}{{ $.Site.Params.Keywords }}{{ end }}" />
|
||||||
<meta name="robots" content="noodp" />
|
<meta name="robots" content="noodp" />
|
||||||
<link rel="canonical" href="{{ .Permalink }}" />
|
<link rel="canonical" href="{{ .Permalink }}" />
|
||||||
@ -21,7 +21,7 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
<!-- Icons -->
|
<!-- Icons -->
|
||||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ "img/apple-touch-icon-144-precomposed.png" | absURL }}">
|
<link rel="apple-touch-icon" href="{{ "img/apple-touch-icon-192x192.png" | absURL }}">
|
||||||
{{ if isset $.Site.Params "favicon" }}
|
{{ if isset $.Site.Params "favicon" }}
|
||||||
<link rel="shortcut icon" href="{{ $.Site.Params.favicon | absURL }}">
|
<link rel="shortcut icon" href="{{ $.Site.Params.favicon | absURL }}">
|
||||||
{{ else }}
|
{{ else }}
|
||||||
@ -40,10 +40,10 @@
|
|||||||
<!-- OG data -->
|
<!-- OG data -->
|
||||||
<meta property="og:locale" content="{{ $.Site.Language.Lang }}" />
|
<meta property="og:locale" content="{{ $.Site.Language.Lang }}" />
|
||||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
||||||
<meta property="og:title" content="{{ if .IsHome }}{{ $.Site.Title }}{{ else }}{{ .Title }} :: {{ $.Site.Title }}{{ end }}">
|
<meta property="og:title" content="{{ if .IsHome }}{{ $.Site.Title }}{{ else }}{{ .Title }}{{ end }}">
|
||||||
<meta property="og:description" content="{{ if .IsHome }}{{ $.Site.Params.Subtitle }}{{ else if .Description}}{{ .Description | plainify }}{{ else }}{{ .Summary | plainify }}{{ end }}" />
|
<meta property="og:description" content="{{ if .IsHome }}{{ $.Site.Params.Subtitle }}{{ else if .Description}}{{ .Description | plainify }}{{ else }}{{ .Summary | plainify }}{{ end }}" />
|
||||||
<meta property="og:url" content="{{ .Permalink }}" />
|
<meta property="og:url" content="{{ .Permalink }}" />
|
||||||
<meta property="og:site_name" content="{{ .Title }}" />
|
<meta property="og:site_name" content="{{ $.Site.Title }}" />
|
||||||
{{ if and (not .IsHome) (isset .Params "cover") }}
|
{{ if and (not .IsHome) (isset .Params "cover") }}
|
||||||
<meta property="og:image" content="{{ .Param "cover" | absURL }}">
|
<meta property="og:image" content="{{ .Param "cover" | absURL }}">
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
<div class="header__logo">
|
<div class="header__logo">
|
||||||
{{ partial "logo.html" . }}
|
{{ partial "logo.html" . }}
|
||||||
</div>
|
</div>
|
||||||
<div class="menu-trigger">menu</div>
|
{{ if len $.Site.Menus }}
|
||||||
|
<div class="menu-trigger">menu</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ if len $.Site.Menus }}
|
{{ if len $.Site.Menus }}
|
||||||
{{ partial "menu.html" . }}
|
{{ partial "menu.html" . }}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{{ if or $.Site.Params.showMenuItems ( eq .Site.Params.showMenuItems 0 ) }}
|
{{ if or $.Site.Params.showMenuItems ( eq .Site.Params.showMenuItems 0 ) }}
|
||||||
{{ range first $.Site.Params.showMenuItems $.Site.Menus.main }}
|
{{ range first $.Site.Params.showMenuItems $.Site.Menus.main }}
|
||||||
{{ if not .HasChildren }}
|
{{ if not .HasChildren }}
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if gt (len $.Site.Menus.main) $.Site.Params.showMenuItems }}
|
{{ if gt (len $.Site.Menus.main) $.Site.Params.showMenuItems }}
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<ul class="menu__sub-inner-more hidden">
|
<ul class="menu__sub-inner-more hidden">
|
||||||
{{ range last (sub (len $.Site.Menus.main) $.Site.Params.showMenuItems) $.Site.Menus.main }}
|
{{ range last (sub (len $.Site.Menus.main) $.Site.Params.showMenuItems) $.Site.Menus.main }}
|
||||||
{{ if not .HasChildren }}
|
{{ if not .HasChildren }}
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
@ -22,12 +22,12 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
{{ range $.Site.Menus.main }}
|
{{ range $.Site.Menus.main }}
|
||||||
{{ if not .HasChildren }}
|
{{ if not .HasChildren }}
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if $.Site.Params.showLanguageSelector }}
|
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<ul class="language-selector">
|
<ul class="language-selector">
|
||||||
<ul class="language-selector-current">
|
<ul class="language-selector-current">
|
||||||
@ -45,16 +45,16 @@
|
|||||||
<ul class="menu__inner menu__inner--mobile">
|
<ul class="menu__inner menu__inner--mobile">
|
||||||
{{ range $.Site.Menus.main }}
|
{{ range $.Site.Menus.main }}
|
||||||
{{ if not .HasChildren }}
|
{{ if not .HasChildren }}
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $.Site.Params.showLanguageSelector }}
|
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
||||||
<hr />
|
<hr />
|
||||||
{{ range $.Site.Home.AllTranslations }}
|
{{ range $.Site.Home.AllTranslations }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
<span class="button previous">
|
<span class="button previous">
|
||||||
<a href="{{ .Paginator.Prev.URL }}">
|
<a href="{{ .Paginator.Prev.URL }}">
|
||||||
<span class="button__icon">←</span>
|
<span class="button__icon">←</span>
|
||||||
<span class="button__text">Newer posts</span>
|
<span class="button__text">{{ $.Site.Params.newerPosts | default "Newer posts" }}</span>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Paginator.HasNext }}
|
{{ if .Paginator.HasNext }}
|
||||||
<span class="button next">
|
<span class="button next">
|
||||||
<a href="{{ .Paginator.Next.URL }}">
|
<a href="{{ .Paginator.Next.URL }}">
|
||||||
<span class="button__text">Older posts</span>
|
<span class="button__text">{{ $.Site.Params.olderPosts | default "Older posts" }}</span>
|
||||||
<span class="button__icon">→</span>
|
<span class="button__icon">→</span>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<figure class="{{ with .Get "position"}}{{ . }}{{ else -}} left {{- end }}" >
|
<figure class="{{ with .Get "position"}}{{ . }}{{ else -}} left {{- end }}" >
|
||||||
<img src="{{ .Get "src" | safeURL }}" {{ with .Get "alt" }} alt="{{ . | plainify }}" {{ end }} {{ with .Get "style" }} style="{{ . | safeCSS }}" {{ end }} />
|
<img src="{{ .Get "src" | safeURL }}" {{ with .Get "alt" }} alt="{{ . | plainify }}" {{ end }} {{ with .Get "style" }} style="{{ . | safeCSS }}" {{ end }} />
|
||||||
{{ if .Get "caption" }}
|
{{ if .Get "caption" }}
|
||||||
<figcaption class="{{ with .Get "captionPosition"}}{{ . }}{{ else -}} center {{- end }}" {{ with .Get "captionStyle" }} style="{{ . | safeCSS }}" {{ end }}>{{ .Get "caption" }}</figcaption>
|
<figcaption class="{{ with .Get "captionPosition"}}{{ . }}{{ else -}} center {{- end }}" {{ with .Get "captionStyle" }} style="{{ . | safeCSS }}" {{ end }}>{{ .Get "caption" | safeHTML }}</figcaption>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</figure>
|
</figure>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ $inner := replaceRE "^\n" "" .Inner | string }}
|
{{ $inner := replaceRE "^\r?\n" "" .Inner | string }}
|
||||||
{{ if len .Params | eq 0 }}
|
{{ if len .Params | eq 0 }}
|
||||||
<pre><code>{{ $inner }}</code></pre>
|
<pre><code>{{ $inner }}</code></pre>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
43
package.json
43
package.json
@ -23,41 +23,38 @@
|
|||||||
"angular-html-parser": "^1.2.0",
|
"angular-html-parser": "^1.2.0",
|
||||||
"babel-eslint": "^10.1.0",
|
"babel-eslint": "^10.1.0",
|
||||||
"babel-loader": "^8.0.5",
|
"babel-loader": "^8.0.5",
|
||||||
"browserslist": "^4.0.1",
|
"browserslist": "^4.16.5",
|
||||||
"clean-webpack-plugin": "^3.0.0",
|
"clean-webpack-plugin": "^3.0.0",
|
||||||
"clipboard": "^2.0.4",
|
"clipboard": "^2.0.4",
|
||||||
"css-loader": "^4.2.2",
|
"css-loader": "^5.1.3",
|
||||||
"cssnano": "^4.1.8",
|
"cssnano": "^5.0.8",
|
||||||
"eslint-config-airbnb": "^18.2.0",
|
"eslint-config-airbnb": "^18.2.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^8.1.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.2.1",
|
"eslint-plugin-jsx-a11y": "^6.2.1",
|
||||||
"file-loader": "^6.1.0",
|
"file-loader": "^6.1.0",
|
||||||
"html-webpack-plugin": "^4.4.1",
|
"husky": "^5.1.3",
|
||||||
"husky": "^4.2.5",
|
"mini-css-extract-plugin": "^1.3.9",
|
||||||
"mini-css-extract-plugin": "^0.11.0",
|
"postcss": "^8.2.10",
|
||||||
"postcss": "^7.0.0",
|
|
||||||
"postcss-browser-reporter": "^0.6.0",
|
"postcss-browser-reporter": "^0.6.0",
|
||||||
"postcss-cli": "^7.1.2",
|
"postcss-cli": "^8.3.1",
|
||||||
"postcss-color-function": "^4.0.1",
|
"postcss-color-function": "^4.0.1",
|
||||||
"postcss-color-mod-function": "^3.0.3",
|
"postcss-color-mod-function": "^3.0.3",
|
||||||
"postcss-import": "^12.0.1",
|
"postcss-import": "^14.0.0",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^5.2.0",
|
||||||
"postcss-mixins": "^6.2.1",
|
"postcss-mixins": "^7.0.3",
|
||||||
"postcss-nested": "^4.2.3",
|
"postcss-nested": "^5.0.5",
|
||||||
"postcss-preset-env": "^6.7.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"postcss-reporter": "^6.0.1",
|
"postcss-reporter": "^7.0.2",
|
||||||
"postcss-url": "^8.0.0",
|
"postcss-url": "^10.1.3",
|
||||||
"prettier-eslint-cli": "^5.0.0",
|
"prettier-eslint-cli": "^5.0.0",
|
||||||
"ramda": "^0.27.1",
|
"ramda": "^0.27.1",
|
||||||
"style-loader": "^1.2.1",
|
"style-loader": "^2.0.0",
|
||||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
"terser-webpack-plugin": "^5.1.1",
|
||||||
"url-loader": "^4.1.0",
|
"url-loader": "^4.1.0",
|
||||||
"webpack": "^4.29.3",
|
"webpack": "^5.27.1",
|
||||||
"webpack-cli": "^3.2.3"
|
"webpack-cli": "^4.5.0"
|
||||||
},
|
},
|
||||||
"husky": {
|
"dependencies": {
|
||||||
"hooks": {
|
"yarn": "^1.22.10"
|
||||||
"pre-push": "yarn build && git add . && git commit --amend --no-edit"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
BIN
static/assets/2078a57b79d547bf1e2502f8d249b867.woff
Normal file
BIN
static/assets/2078a57b79d547bf1e2502f8d249b867.woff
Normal file
Binary file not shown.
BIN
static/assets/58cebbe9a6bdcba6d4bb56a22a9e812f.woff
Normal file
BIN
static/assets/58cebbe9a6bdcba6d4bb56a22a9e812f.woff
Normal file
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
static/assets/languageSelector.js
Normal file
4
static/assets/languageSelector.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(function(){var __webpack_modules__={"./assets/js/languageSelector.js":
|
||||||
|
/*!***************************************!*\
|
||||||
|
!*** ./assets/js/languageSelector.js ***!
|
||||||
|
\***************************************/function(){eval('var mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");\n\nvar isMobile = function isMobile() {\n return window.matchMedia(mobileQuery).matches;\n};\n\nvar languageSelector = document.querySelector(".language-selector-current");\nvar moreLanguagesContainer = document.querySelector(".language-selector__more");\ndocument.body.addEventListener("click", function () {\n if (!isMobile() && moreLanguagesContainer && !moreLanguagesContainer.classList.contains("hidden")) {\n moreLanguagesContainer.classList.add("hidden");\n }\n});\nlanguageSelector && languageSelector.addEventListener("click", function (e) {\n if (!isMobile()) {\n e.stopPropagation();\n moreLanguagesContainer.classList.toggle("hidden");\n }\n});\n\n//# sourceURL=webpack://terminal/./assets/js/languageSelector.js?')}},__webpack_exports__={};__webpack_modules__["./assets/js/languageSelector.js"]()})();
|
@ -1 +1,4 @@
|
|||||||
!function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}r.m=n,r.c=o,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,n){n(1),e.exports=n(2)},function(e,t){function n(){return window.matchMedia(d).matches}function o(){c&&c.classList.toggle("hidden",!n()),i&&i.classList.toggle("hidden",n()),a&&a.classList.toggle("hidden",!n())}var r=document.querySelector(".container"),i=document.querySelector(".menu"),c=document.querySelector(".menu-trigger"),u=(document.querySelector(".menu__inner--desktop"),document.querySelector(".menu__sub-inner-more-trigger")),a=document.querySelector(".menu__sub-inner-more"),d=getComputedStyle(document.body).getPropertyValue("--phoneWidth");i&&i.addEventListener("click",function(e){return e.stopPropagation()}),a&&a.addEventListener("click",function(e){return e.stopPropagation()}),o(),document.body.addEventListener("click",function(){n()||!a||a.classList.contains("hidden")?n()&&!i.classList.contains("hidden")&&i.classList.add("hidden"):a.classList.add("hidden")}),window.addEventListener("resize",o),c&&c.addEventListener("click",function(e){e.stopPropagation(),i&&i.classList.toggle("hidden")}),u&&u.addEventListener("click",function(e){e.stopPropagation(),a&&a.classList.toggle("hidden"),a.getBoundingClientRect().right>r.getBoundingClientRect().right&&(a.style.left="auto",a.style.right=0)})},function(e,t){var n=getComputedStyle(document.body).getPropertyValue("--phoneWidth");window.matchMedia(n).matches||(languageSelector=document.querySelector(".language-selector-current"),moreLanguagesContainer=document.querySelector(".language-selector__more"),document.body.addEventListener("click",function(){moreLanguagesContainer&&!moreLanguagesContainer.classList.contains("hidden")&&moreLanguagesContainer.classList.add("hidden")}),languageSelector&&languageSelector.addEventListener("click",function(e){e.stopPropagation(),moreLanguagesContainer.classList.toggle("hidden")}))}]);
|
(function(){var __webpack_modules__={"./assets/js/menu.js":
|
||||||
|
/*!***************************!*\
|
||||||
|
!*** ./assets/js/menu.js ***!
|
||||||
|
\***************************/function(){eval('var container = document.querySelector(".container");\nvar menu = document.querySelector(".menu");\nvar mobileMenuTrigger = document.querySelector(".menu-trigger");\nvar desktopMenu = document.querySelector(".menu__inner--desktop");\nvar desktopMenuTrigger = document.querySelector(".menu__sub-inner-more-trigger");\nvar menuMore = document.querySelector(".menu__sub-inner-more");\nvar mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");\n\nvar isMobile = function isMobile() {\n return window.matchMedia(mobileQuery).matches;\n};\n\nvar handleMenuClasses = function handleMenuClasses() {\n mobileMenuTrigger && mobileMenuTrigger.classList.toggle("hidden", !isMobile());\n menu && menu.classList.toggle("hidden", isMobile());\n menuMore && menuMore.classList.toggle("hidden", !isMobile());\n}; // Common\n\n\nmenu && menu.addEventListener("click", function (e) {\n return e.stopPropagation();\n});\nmenuMore && menuMore.addEventListener("click", function (e) {\n return e.stopPropagation();\n});\nhandleMenuClasses();\ndocument.body.addEventListener("click", function () {\n if (!isMobile() && menuMore && !menuMore.classList.contains("hidden")) {\n menuMore.classList.add("hidden");\n } else if (isMobile() && !menu.classList.contains("hidden")) {\n menu.classList.add("hidden");\n }\n});\nwindow.addEventListener("resize", handleMenuClasses); // Mobile menu\n\nmobileMenuTrigger && mobileMenuTrigger.addEventListener("click", function (e) {\n e.stopPropagation();\n menu && menu.classList.toggle("hidden");\n}); // Desktop menu\n\ndesktopMenuTrigger && desktopMenuTrigger.addEventListener("click", function (e) {\n e.stopPropagation();\n menuMore && menuMore.classList.toggle("hidden");\n\n if (menuMore.getBoundingClientRect().right > container.getBoundingClientRect().right) {\n menuMore.style.left = "auto";\n menuMore.style.right = 0;\n }\n});\n\n//# sourceURL=webpack://terminal/./assets/js/menu.js?')}},__webpack_exports__={};__webpack_modules__["./assets/js/menu.js"]()})();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,8 +1,6 @@
|
|||||||
const Webpack = require("webpack");
|
|
||||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
||||||
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
||||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
|
const TerserPlugin = require("terser-webpack-plugin");
|
||||||
|
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
@ -14,7 +12,8 @@ module.exports = (env, { mode }) => ({
|
|||||||
modules: ["assets", "node_modules"],
|
modules: ["assets", "node_modules"],
|
||||||
},
|
},
|
||||||
entry: {
|
entry: {
|
||||||
main: [join("assets", "js", "menu.js"), join("assets", "js", "languageSelector.js")],
|
main: join("assets", "js", "menu.js"),
|
||||||
|
languageSelector: join("assets", "js", "languageSelector.js"),
|
||||||
prism: join("assets", "js", "prism.js"),
|
prism: join("assets", "js", "prism.js"),
|
||||||
style: join("assets", "css", "style.css"),
|
style: join("assets", "css", "style.css"),
|
||||||
red: join("assets", "css", "color", "red.css"),
|
red: join("assets", "css", "color", "red.css"),
|
||||||
@ -67,14 +66,7 @@ module.exports = (env, { mode }) => ({
|
|||||||
importLoaders: 1,
|
importLoaders: 1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
"postcss-loader",
|
||||||
loader: "postcss-loader",
|
|
||||||
options: {
|
|
||||||
config: {
|
|
||||||
path: "postcss.config.js",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -84,9 +76,11 @@ module.exports = (env, { mode }) => ({
|
|||||||
name: "vendor",
|
name: "vendor",
|
||||||
minChunks: 2,
|
minChunks: 2,
|
||||||
},
|
},
|
||||||
|
minimize: true,
|
||||||
minimizer: [
|
minimizer: [
|
||||||
new UglifyJsPlugin({
|
new TerserPlugin({
|
||||||
sourceMap: true,
|
parallel: true,
|
||||||
|
extractComments: false,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user