Compare commits
No commits in common. "master" and "webpack" have entirely different histories.
@ -18,7 +18,7 @@ rules:
|
|||||||
- as-needed
|
- as-needed
|
||||||
semi:
|
semi:
|
||||||
- 2
|
- 2
|
||||||
- always
|
- never
|
||||||
class-methods-use-this: 0
|
class-methods-use-this: 0
|
||||||
comma-dangle:
|
comma-dangle:
|
||||||
- 2
|
- 2
|
||||||
@ -33,7 +33,7 @@ rules:
|
|||||||
func-names: 0
|
func-names: 0
|
||||||
quotes:
|
quotes:
|
||||||
- 2
|
- 2
|
||||||
- double
|
- single
|
||||||
- allowTemplateLiterals: true
|
- allowTemplateLiterals: true
|
||||||
no-underscore-dangle: 0
|
no-underscore-dangle: 0
|
||||||
object-curly-newline: 0
|
object-curly-newline: 0
|
||||||
|
3
.gitignore
vendored
@ -88,6 +88,3 @@ typings/
|
|||||||
.dynamodb/
|
.dynamodb/
|
||||||
|
|
||||||
# End of https://www.gitignore.io/api/node
|
# End of https://www.gitignore.io/api/node
|
||||||
public
|
|
||||||
resources
|
|
||||||
.hugo_build.lock
|
|
||||||
|
27
.postcssrc.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
const url = require("postcss-url");
|
||||||
|
const imports = require("postcss-import");
|
||||||
|
const nested = require("postcss-nested");
|
||||||
|
const postCSSPresetEnv = require("postcss-preset-env");
|
||||||
|
const cssnano = require("cssnano");
|
||||||
|
const color = require("postcss-color-mod-function");
|
||||||
|
const mixins = require("postcss-mixins");
|
||||||
|
|
||||||
|
module.exports = () => ({
|
||||||
|
plugins: [
|
||||||
|
url,
|
||||||
|
imports,
|
||||||
|
mixins,
|
||||||
|
nested,
|
||||||
|
postCSSPresetEnv({
|
||||||
|
stage: 1,
|
||||||
|
preserve: true,
|
||||||
|
features: {
|
||||||
|
"custom-properties": true,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
cssnano({
|
||||||
|
preset: "default",
|
||||||
|
}),
|
||||||
|
color,
|
||||||
|
],
|
||||||
|
});
|
@ -2,7 +2,6 @@
|
|||||||
"parser": "babel",
|
"parser": "babel",
|
||||||
"printWidth": 100,
|
"printWidth": 100,
|
||||||
"trailingComma": "all",
|
"trailingComma": "all",
|
||||||
"arrowParens": "avoid",
|
|
||||||
"overrides": [{
|
"overrides": [{
|
||||||
"files": ".html",
|
"files": ".html",
|
||||||
"options": {
|
"options": {
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": [
|
|
||||||
"stylelint-config-standard-scss",
|
|
||||||
"stylelint-config-prettier-scss"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"max-empty-lines": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
122
README.md
@ -1,20 +1,9 @@
|
|||||||
# Terminal
|
# Terminal
|
||||||
|
|
||||||
## The theme is no longer maintained, but can still be used
|
|
||||||
|
|
||||||
Even if the repository is archived you can still use the theme, fork it, download it, expand it, etc. Remember that each Hugo theme is a module that can be modified to match your needs. The theme is fully "open" and it depends only on the internal engines implemented in Hugo.
|
|
||||||
|
|
||||||
The theme brings many useful features thanks to [all people that contributed to it](https://github.com/panr/hugo-theme-terminal/graphs/contributors) (I want to thank you all!). At the time of archiving the theme has reached 9th place on the [official Hugo Themes list](https://themes.gohugo.io/). This is huge! Thanks to you!
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
![Terminal](https://github.com/panr/hugo-theme-terminal/blob/master/images/screenshot.png?raw=true)
|
![Terminal](https://github.com/panr/hugo-theme-terminal/blob/master/images/screenshot.png?raw=true)
|
||||||
|
|
||||||
|
|
||||||
### DEMO - https://hugo-terminal.now.sh/
|
### DEMO - https://hugo-terminal.now.sh/
|
||||||
|
|
||||||
### ⚠️ The theme needs at least Hugo **Extended** v0.90.x.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
@ -25,11 +14,11 @@ The theme brings many useful features thanks to [all people that contributed to
|
|||||||
- [How to configure](#how-to-configure)
|
- [How to configure](#how-to-configure)
|
||||||
- [Post archetype](#post-archetype)
|
- [Post archetype](#post-archetype)
|
||||||
- [Add-ons](#add-ons)
|
- [Add-ons](#add-ons)
|
||||||
- [How to edit the theme](#how-to-edit)
|
- [How to (safely) edit the theme](#how-to-edit)
|
||||||
- [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)
|
||||||
- [License](#license)
|
- [Licence](#licence)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
@ -37,7 +26,6 @@ The theme brings many useful features thanks to [all people that contributed to
|
|||||||
- [**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
|
||||||
- fully based on Hugo ecosystem (Pipes and Modules)
|
|
||||||
|
|
||||||
#### Built-in shortcodes
|
#### Built-in shortcodes
|
||||||
|
|
||||||
@ -93,64 +81,25 @@ A custom syntax highlighting based on PrismJS. All you need to do is to wrap you
|
|||||||
|
|
||||||
You can download the theme manually by going to [https://github.com/panr/hugo-theme-terminal.git](https://github.com/panr/hugo-theme-terminal.git) and pasting it to `themes/terminal` in your root directory.
|
You can download the theme manually by going to [https://github.com/panr/hugo-theme-terminal.git](https://github.com/panr/hugo-theme-terminal.git) and pasting it to `themes/terminal` in your root directory.
|
||||||
|
|
||||||
You can also choose **one of the 3 possibilities** to install the theme:
|
You can also clone it directly to your Hugo folder:
|
||||||
|
|
||||||
1. as Hugo Module
|
```
|
||||||
2. as a standalone local directory
|
git clone -b webpack https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
||||||
3. as a git submodule
|
|
||||||
|
|
||||||
⚠️ The theme needs at least Hugo **Extended** v0.90.x.
|
|
||||||
|
|
||||||
### Install theme as Hugo Module
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# If this is the first time you're using Hugo Modules
|
|
||||||
# in your project. You have to initiate your own module before
|
|
||||||
# you fetch the theme module.
|
|
||||||
#
|
|
||||||
# hugo mod init [your website/module name]
|
|
||||||
hugo mod get github.com/panr/hugo-theme-terminal/v3
|
|
||||||
```
|
```
|
||||||
|
|
||||||
and in your config file add:
|
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:
|
||||||
|
|
||||||
```toml
|
```
|
||||||
[module]
|
git submodule add -b webpack -f https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
||||||
# this is needed when you fetch the theme as a submodule to your repo.
|
|
||||||
# replacements = "github.com/panr/hugo-theme-terminal -> themes/terminal"
|
|
||||||
[[module.imports]]
|
|
||||||
path = 'github.com/panr/hugo-theme-terminal/v3'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Keep in mind that the theme by default won't show up in the `themes` directory. This means that you are using the theme as it was on the repository at the moment you fetched it. Your local `go.sum` file keeps all the references. Read more about Hugo Modules in the [official documentation](https://gohugo.io/hugo-modules/).
|
⚠️ **The theme needs at least Hugo version 0.74.x**.
|
||||||
|
|
||||||
### Install theme locally
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
|
||||||
```
|
|
||||||
|
|
||||||
This will clone the repository directly to the `themes/terminal` directory.
|
|
||||||
|
|
||||||
### Install theme as a submodule
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git submodule add -f https://github.com/panr/hugo-theme-terminal.git themes/terminal
|
|
||||||
```
|
|
||||||
|
|
||||||
This will install the repository as a sumbodule in the `themes/terminal` directory.
|
|
||||||
|
|
||||||
⚠️ If you encounter any issues with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
Error: module "terminal" not found; either add it as a Hugo Module or store it in "[...your custom path]/themes".: module does not exist
|
|
||||||
```
|
|
||||||
|
|
||||||
then please try to remove `theme = "terminal"` from your config file.
|
|
||||||
|
|
||||||
## How to run your site
|
## How to run your site
|
||||||
|
|
||||||
```bash
|
If you installed all needed `npm` dependencies, then you can run:
|
||||||
|
|
||||||
|
```
|
||||||
hugo server -t terminal
|
hugo server -t terminal
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -163,8 +112,6 @@ The theme doesn't require any advanced configuration. Just copy:
|
|||||||
```toml
|
```toml
|
||||||
baseurl = "/"
|
baseurl = "/"
|
||||||
languageCode = "en-us"
|
languageCode = "en-us"
|
||||||
# Add it only if you keep the theme in the `themes` directory.
|
|
||||||
# Remove it if you use the theme as a remote Hugo Module.
|
|
||||||
theme = "terminal"
|
theme = "terminal"
|
||||||
paginate = 5
|
paginate = 5
|
||||||
|
|
||||||
@ -240,8 +187,6 @@ paginate = 5
|
|||||||
olderPosts = "Older posts"
|
olderPosts = "Older posts"
|
||||||
missingContentMessage = "Page not found..."
|
missingContentMessage = "Page not found..."
|
||||||
missingBackButtonLabel = "Back to home page"
|
missingBackButtonLabel = "Back to home page"
|
||||||
minuteReadingTime = "min read"
|
|
||||||
words = "words"
|
|
||||||
|
|
||||||
[languages.en.params.logo]
|
[languages.en.params.logo]
|
||||||
logoText = "Terminal"
|
logoText = "Terminal"
|
||||||
@ -256,14 +201,6 @@ paginate = 5
|
|||||||
identifier = "showcase"
|
identifier = "showcase"
|
||||||
name = "Showcase"
|
name = "Showcase"
|
||||||
url = "/showcase"
|
url = "/showcase"
|
||||||
|
|
||||||
[module]
|
|
||||||
# In case you would like to make changes to the theme and keep it locally in you repository,
|
|
||||||
# uncomment the line below (and correct the local path if necessary).
|
|
||||||
# --
|
|
||||||
# replacements = "github.com/panr/hugo-theme-terminal -> themes/terminal"
|
|
||||||
[[module.imports]]
|
|
||||||
path = 'github.com/panr/hugo-theme-terminal'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
to `config.toml` file in your Hugo root directory and change params fields. In case you need, here's [a YAML version](https://gist.github.com/panr/9eeea6f595c257febdadc11763e3a6d1).
|
to `config.toml` file in your Hugo root directory and change params fields. In case you need, here's [a YAML version](https://gist.github.com/panr/9eeea6f595c257febdadc11763e3a6d1).
|
||||||
@ -280,11 +217,39 @@ See the default `post` file params supported by the theme — https://github.com
|
|||||||
- **Extended Head** — please take a look at `layouts/partials/extended_head.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/extended_head.html
|
- **Extended Head** — please take a look at `layouts/partials/extended_head.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/extended_head.html
|
||||||
- **Extended Footer** — please take a look at `layouts/partials/extended_footer.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/extended_footer.html
|
- **Extended Footer** — please take a look at `layouts/partials/extended_footer.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/extended_footer.html
|
||||||
|
|
||||||
## How to edit the theme <a id="how-to-edit" />
|
## How to (safely) edit the theme <a id="how-to-edit" />
|
||||||
|
|
||||||
If you are using as a remote Hugo Module (you don't have the theme files in the `theme/terminal`) and you have to override only some of the styles, you can do this easily by adding `static/style.css` in your root directory and point things you want to change.
|
If you have to override only some of the styles, you can do this easily by adding `static/style.css` in your root directory and point things you want to change.
|
||||||
|
|
||||||
If you have the theme files in the theme directory, then you can directly edit anything in the theme, you just have to go to `themes/terminal` and modify the files. No compilation step needed.
|
To change something directly in the theme, you have to go to `themes/terminal` and modify the files.
|
||||||
|
|
||||||
|
First, you need to install Node dependencies. To do so, go to the theme directory (from your Hugo root directory):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd themes/terminal
|
||||||
|
```
|
||||||
|
|
||||||
|
then run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
npm i yarn
|
||||||
|
yarn
|
||||||
|
```
|
||||||
|
|
||||||
|
After you modified the files you can run webpack in watch mode:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn dev
|
||||||
|
```
|
||||||
|
|
||||||
|
or rebuild theme
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn build
|
||||||
|
```
|
||||||
|
|
||||||
|
To see the changes (remember to restart `hugo server`).
|
||||||
|
|
||||||
## Found a bug? <a id="bug" />
|
## Found a bug? <a id="bug" />
|
||||||
|
|
||||||
@ -311,7 +276,6 @@ 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)! 🤗
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright © 2019-2022 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
Copyright © 2019-2022 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
||||||
|
25
USERS.md
@ -1,20 +1,27 @@
|
|||||||
# Meet the users of Terminal theme!
|
# Meet the users of Terminal theme!
|
||||||
|
|
||||||
- https://xicode.se **magistern** (Teacher)
|
- https://xicode.se **magistern** (Teacher)
|
||||||
- https://devmaster64.com **devmaster64** (Software Developer)
|
- https://devmaster64.com **devmaster64** (Software Developer)
|
||||||
|
- https://mickie1.gitlab.io/blog/ **mickie** (Engineer)
|
||||||
- https://calloc.net **Vaibhav Yenamandra** (Software Engineer)
|
- https://calloc.net **Vaibhav Yenamandra** (Software Engineer)
|
||||||
- https://potatofrom.space **Kevin Liu** (Software)
|
- https://potatofrom.space **Kevin Liu** (Software)
|
||||||
- https://horochx.org **horochx** (Software Developer)
|
- https://horochx.org **horochx** (Software Developer)
|
||||||
- https://feng.si **Si Feng** (Software Engineer)
|
- https://feng.si **Si Feng** (Software Engineer)
|
||||||
- https://ben-on-vms.com **Benedikt Frenzel** (Technical Support Engineer)
|
- https://ben-on-vms.com **Benedikt Frenzel** (Technical Support Engineer)
|
||||||
- https://johngazzini.com **John Gazzini** (Software Engineer)
|
- https://johngazzini.com **John Gazzini** (Software Engineer)
|
||||||
|
- https://geekx.tech/ **Sagar Ladla** (Student Developer & Cyber Security Specialist)
|
||||||
- https://tears.io/ **Alex** (SRE)
|
- https://tears.io/ **Alex** (SRE)
|
||||||
- https://ayushkarn.me/ **Ayush Karn** (Student Developer)
|
- https://ayushkarn.me/ **Ayush Karn** (Student Developer)
|
||||||
|
- https://ssgram.dev **Ramaseshan Parthasarathy** (Software Developer)
|
||||||
- https://zaine.me **Amine Zaine** (Cloud Engineer)
|
- https://zaine.me **Amine Zaine** (Cloud Engineer)
|
||||||
- https://notes.dmaitre.phyip3.dur.ac.uk/computing-club/ **Ryan Moodie** (Physics PhD student)
|
- https://notes.dmaitre.phyip3.dur.ac.uk/computing-club/ **Ryan Moodie** (Physics PhD student)
|
||||||
|
- https://thecodecousins.com **Stanley Nguyen** (Software Engineer) & **Hoang Do** (Software & IoT Engineer)
|
||||||
|
- https://schacherbauer.dev **Markus Schacherbauer** (Student Developer)
|
||||||
|
- https://rinma.dev **Marvin Dalheimer** (Software Developer)
|
||||||
- https://lunar.computer **Lunar Computer** (DevOps Engineer)
|
- https://lunar.computer **Lunar Computer** (DevOps Engineer)
|
||||||
- https://naxxfish.net **Chris Roberts** (Broadcast Systems Engineer)
|
- https://naxxfish.net **Chris Roberts** (Broadcast Systems 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://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)
|
||||||
@ -23,9 +30,12 @@
|
|||||||
- 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://pablart.com/ **Pablo Diaz-Gutierrez** (Software Engineer, General Tinkerer)
|
- 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://erisianrite.com/ **ErisianRite** (Coding, Engineering, Tools for Thought)
|
- https://wjdevschool.com/ **Wojciech Bogócki** (Making Things & Teaching / W&J Dev School)
|
||||||
|
- https://dongzhi.me **Joe** (Software Developer)
|
||||||
- https://isaes.com.tr/ **Isa Es** (Software Engineer)
|
- https://isaes.com.tr/ **Isa Es** (Software Engineer)
|
||||||
|
- https://conight.com **Conight Wang** (Software Engineer)
|
||||||
- https://blog.m5e.de/ **Christoph Miksche** (Software Developer)
|
- https://blog.m5e.de/ **Christoph Miksche** (Software Developer)
|
||||||
- https://mpostument.com/ **Maksym Postument** (DevOps Engineer)
|
- https://mpostument.com/ **Maksym Postument** (DevOps Engineer)
|
||||||
- https://mathiejosh.xyz **Josh Mathie** (Electrical Engineering Technology Student/Sales and Engineering Tech)
|
- https://mathiejosh.xyz **Josh Mathie** (Electrical Engineering Technology Student/Sales and Engineering Tech)
|
||||||
@ -33,6 +43,8 @@
|
|||||||
- https://blog.puvvadi.me **KD Puvvadi** (Software Dev & Cloud Orchestrator)
|
- https://blog.puvvadi.me **KD Puvvadi** (Software Dev & Cloud Orchestrator)
|
||||||
- https://hidden.land/ **Louisload** (Game Developer & Musician)
|
- https://hidden.land/ **Louisload** (Game Developer & Musician)
|
||||||
- https://linuxbase.nl **Michael Trip** (DevOps Engineer)
|
- 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://blog.sethforprivacy.com **Seth For Privacy** (Security, privacy, and cryptocurrency writer, podcaster)
|
||||||
- https://thesprawl.city **crish** (Software and stuff)
|
- https://thesprawl.city **crish** (Software and stuff)
|
||||||
- https://justinnuwin.com **Justin Nguyen** (Software & Hardware Developer)
|
- https://justinnuwin.com **Justin Nguyen** (Software & Hardware Developer)
|
||||||
@ -42,20 +54,16 @@
|
|||||||
- https://biplav.xyz **Biplav's Blog** (Student)
|
- https://biplav.xyz **Biplav's Blog** (Student)
|
||||||
- https://santiago.wtf **Nicholas Santiago** (DevOps Engineer)
|
- https://santiago.wtf **Nicholas Santiago** (DevOps Engineer)
|
||||||
- https://2200g.github.io/ **2200g** (Blogger/Student)
|
- https://2200g.github.io/ **2200g** (Blogger/Student)
|
||||||
|
- https://cristiioan.me **Cristian Margine** (Student)
|
||||||
- https://they.mint.lgbt **Joey Aliaga** (Software Developer & Student)
|
- https://they.mint.lgbt **Joey Aliaga** (Software Developer & Student)
|
||||||
- https://tatewilhelm.me **Tate Wilhelm** (Student, Programmer & Tinkerer)
|
- https://tatewilhelm.me **Tate Wilhelm** (Student, Programmer & Tinkerer)
|
||||||
- https://mikefoden.com **Mike Foden** (Software Developer)
|
- https://mikefoden.com **Mike Foden** (Software Developer)
|
||||||
- https://undemalum.github.io/portfolio/ **Mateusz Konat** (Student)
|
- https://undemalum.github.io/portfolio/ **Mateusz Konat** (Student)
|
||||||
- https://ku0hn.radio **Ben Kuhn** (Ham Radio Operator, InfoSec Engineer, Tinkerer)
|
- 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://www.grumpymetalguy.com **GrumpyMetalGuy** (General Grumper and Developer)
|
||||||
- https://blog.jontes.page **Jonte** (general tech geek)
|
- https://blog.jontes.page **Jonte** (general tech geek)
|
||||||
- https://nazdarthegame.com/ **Michal Skoula** (Software Developer)
|
- https://nazdarthegame.com/ **Michal Skoula** (Software Developer)
|
||||||
- https://1mup.myorange.house **Antonio Garosi** (Street art gallery)
|
|
||||||
- https://kitchvx.github.io **Nathan Kitching** (IT Student)
|
|
||||||
- https://dgood.win **Dom Goodwin** (Platform Engineer)
|
|
||||||
- https://sir-photch.xyz **Sir-Photch** (ComSci-student. German Blog)
|
|
||||||
- https://drewmorris.info **Drew Morris** (Mathematician && Computer Scientist)
|
|
||||||
- https://blog.darkiiiiiice.com **MarioMang** (Software Developer)
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
TEMPLATE:
|
TEMPLATE:
|
||||||
@ -63,4 +71,3 @@
|
|||||||
- https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer)
|
- https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer)
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -10,5 +10,4 @@ description = ""
|
|||||||
showFullContent = false
|
showFullContent = false
|
||||||
readingTime = false
|
readingTime = false
|
||||||
hideComments = false
|
hideComments = false
|
||||||
color = "" #color from the theme settings
|
|
||||||
+++
|
+++
|
||||||
|
@ -12,13 +12,12 @@ a.button {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 8px 18px;
|
padding: 8px 18px;
|
||||||
margin: 5px 0;
|
margin-bottom: 5px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 8;
|
border-radius: 0;
|
||||||
border: 1px solid $accent;
|
border: 1px solid var(--accent);
|
||||||
background: $accent;
|
background: var(--accent);
|
||||||
color: $background;
|
|
||||||
font: inherit;
|
font: inherit;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
@ -26,7 +25,7 @@ a.button {
|
|||||||
outline: none;
|
outline: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: transparentize($accent, .1);
|
background: color-mod(var(--accent) a(90%));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* variants */
|
/* variants */
|
||||||
@ -64,7 +63,7 @@ a.read-more:hover,
|
|||||||
a.read-more:active {
|
a.read-more:active {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
border: none;
|
border: none;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
padding: 0;
|
padding: 0;
|
@ -1,5 +1,5 @@
|
|||||||
.collapsable-code {
|
.collapsable-code {
|
||||||
$border-color: mix($accent, #999, 90%);
|
--border-color: color-mod(var(--accent) blend(#999 90%));
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -39,13 +39,13 @@
|
|||||||
min-width: 30px;
|
min-width: 30px;
|
||||||
min-height: 30px;
|
min-height: 30px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
border-bottom: 1px solid $border-color;
|
border-bottom: 1px solid var(--border-color);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__title {
|
&__title {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
padding: 3px 10px;
|
padding: 3px 10px;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -53,15 +53,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__language {
|
&__language {
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
border: 1px solid $border-color;
|
border: 1px solid var(--border-color);
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
padding: 3px 10px;
|
padding: 3px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__toggle {
|
&__toggle {
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
padding: 3px 10px;
|
padding: 3px 10px;
|
||||||
|
|
14
assets/css/color/blue.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
@import '../main.css';
|
||||||
|
@import '../header.css';
|
||||||
|
@import '../logo.css';
|
||||||
|
@import '../pagination.css';
|
||||||
|
@import '../post.css';
|
||||||
|
@import '../syntax.css';
|
||||||
|
@import '../variables.css';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--accent: #23B0FF;
|
||||||
|
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
|
--color: white;
|
||||||
|
--border-color: rgba(255, 255, 255, .1);
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
$accent: #23B0FF;
|
|
14
assets/css/color/green.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
@import '../main.css';
|
||||||
|
@import '../header.css';
|
||||||
|
@import '../logo.css';
|
||||||
|
@import '../pagination.css';
|
||||||
|
@import '../post.css';
|
||||||
|
@import '../syntax.css';
|
||||||
|
@import '../variables.css';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--accent: #78E2A0;
|
||||||
|
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
|
--color: white;
|
||||||
|
--border-color: rgba(255, 255, 255, .1);
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
$accent: #78E2A0;
|
|
@ -1 +0,0 @@
|
|||||||
$accent: #FFA86A;
|
|
14
assets/css/color/pink.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
@import '../main.css';
|
||||||
|
@import '../header.css';
|
||||||
|
@import '../logo.css';
|
||||||
|
@import '../pagination.css';
|
||||||
|
@import '../post.css';
|
||||||
|
@import '../syntax.css';
|
||||||
|
@import '../variables.css';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--accent: #EE72F1;
|
||||||
|
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
|
--color: white;
|
||||||
|
--border-color: rgba(255, 255, 255, .1);
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
$accent: #EE72F1;
|
|
14
assets/css/color/red.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
@import '../main.css';
|
||||||
|
@import '../header.css';
|
||||||
|
@import '../logo.css';
|
||||||
|
@import '../pagination.css';
|
||||||
|
@import '../post.css';
|
||||||
|
@import '../syntax.css';
|
||||||
|
@import '../variables.css';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--accent: #FF6266;
|
||||||
|
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
|
--color: white;
|
||||||
|
--border-color: rgba(255, 255, 255, .1);
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
$accent: #FF6266;
|
|
@ -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;
|
||||||
}
|
}
|
@ -11,7 +11,7 @@
|
|||||||
width: 760px;
|
width: 760px;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
|
||||||
@media ($tablet) {
|
@media (--tablet) {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -22,11 +22,10 @@
|
|||||||
|
|
||||||
.copyright {
|
.copyright {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row wrap;
|
flex-direction: row;
|
||||||
flex: 1;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
justify-content: center;
|
color: var(--light-color-secondary);
|
||||||
|
|
||||||
&--user {
|
&--user {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
@ -35,10 +34,17 @@
|
|||||||
|
|
||||||
& > *:first-child:not(:only-child) {
|
& > *:first-child:not(:only-child) {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
||||||
|
@media (--tablet) {
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
@media (--tablet) {
|
||||||
white-space: nowrap;
|
flex-direction: column;
|
||||||
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
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%));
|
||||||
|
}
|
@ -1,43 +0,0 @@
|
|||||||
input, textarea, select {
|
|
||||||
background: transparent;
|
|
||||||
color: $accent;
|
|
||||||
border: 1px solid $accent;
|
|
||||||
border-radius: 0;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 5px 0;
|
|
||||||
font: inherit;
|
|
||||||
appearance: none;
|
|
||||||
|
|
||||||
&:focus, :active {
|
|
||||||
border-color: $color;
|
|
||||||
outline: 1px solid $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
background: $background;
|
|
||||||
|
|
||||||
option {
|
|
||||||
background: $background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
::placeholder {
|
|
||||||
color: transparentize($accent, .5);
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
&[type="checkbox"] {
|
|
||||||
vertical-align: middle;
|
|
||||||
padding: 10px;
|
|
||||||
box-shadow: inset 0 0 0 3px $background;
|
|
||||||
|
|
||||||
&:checked {
|
|
||||||
background: $accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
162
assets/css/header.css
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
@define-mixin menu {
|
||||||
|
position: absolute;
|
||||||
|
background: var(--background);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
color: white;
|
||||||
|
border: 2px solid;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
list-style: none;
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__inner {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__logo {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
background: repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
max-width: 100%;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
--shadow-color: color-mod(var(--background) a(80%));
|
||||||
|
--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 10px 10px var(--shadow-color);
|
||||||
|
margin: 20px 1px;
|
||||||
|
|
||||||
|
@media (--phone) {
|
||||||
|
@mixin menu;
|
||||||
|
top: 50px;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__inner {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
&--desktop {
|
||||||
|
@media (--phone) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--mobile {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
@media (--phone) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (--phone) {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__sub-inner {
|
||||||
|
position: relative;
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&:not(:only-child) {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-more {
|
||||||
|
@mixin menu;
|
||||||
|
top: 35px;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
&-trigger {
|
||||||
|
color: var(--accent);
|
||||||
|
user-select: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.language-selector {
|
||||||
|
position: relative;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&-current {
|
||||||
|
list-style-type: none;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
color: var(--accent);
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__more {
|
||||||
|
@mixin menu;
|
||||||
|
top: 35px;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-trigger {
|
||||||
|
color: var(--accent);
|
||||||
|
border: 2px solid;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 100%;
|
||||||
|
padding: 3px 8px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,34 +0,0 @@
|
|||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__inner {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__logo {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
background: repeating-linear-gradient(90deg, $accent, $accent 2px, transparent 0, transparent 10px);
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
max-width: 100%;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,7 +2,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background: $accent;
|
background: var(--accent);
|
||||||
color: black;
|
color: black;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
}
|
}
|
@ -15,8 +15,8 @@ body {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.54;
|
line-height: 1.54;
|
||||||
letter-spacing: -0.02em;
|
letter-spacing: -0.02em;
|
||||||
background-color: $background;
|
background-color: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
color: $color;
|
color: var(--color);
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
|
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
|
||||||
@ -24,7 +24,7 @@ body {
|
|||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ a {
|
|||||||
|
|
||||||
/* Waiting for a better times... */
|
/* Waiting for a better times... */
|
||||||
/* &:has(code) {
|
/* &:has(code) {
|
||||||
text-decoration-color: $accent;
|
text-decoration-color: var(--accent);
|
||||||
} */
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,8 +109,8 @@ figure {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
background: $accent;
|
background: var(--accent);
|
||||||
color: $background;
|
color: var(--background);
|
||||||
/* opacity: .8; */
|
/* opacity: .8; */
|
||||||
|
|
||||||
&.left {
|
&.left {
|
||||||
@ -130,8 +130,8 @@ figure {
|
|||||||
code, kbd {
|
code, kbd {
|
||||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||||
font-feature-settings: normal;
|
font-feature-settings: normal;
|
||||||
background: transparentize($accent, .8);
|
background: color-mod(var(--accent) a(20%));
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
padding: 1px 6px;
|
padding: 1px 6px;
|
||||||
margin: 0 2px;
|
margin: 0 2px;
|
||||||
font-size: .95rem;
|
font-size: .95rem;
|
||||||
@ -157,7 +157,7 @@ pre {
|
|||||||
margin-top: -40px;
|
margin-top: -40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
@ -172,12 +172,12 @@ pre {
|
|||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
border-top: 1px solid $accent;
|
border-top: 1px solid var(--accent);
|
||||||
border-bottom: 1px solid $accent;
|
border-bottom: 1px solid var(--accent);
|
||||||
margin: 40px 0;
|
margin: 40px 0;
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,15 +198,15 @@ blockquote {
|
|||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: -25px;
|
left: -25px;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.twitter-tweet {
|
&.twitter-tweet {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparentize($accent, .9);
|
background: color-mod(var(--accent) a(10%));
|
||||||
font: inherit;
|
font: inherit;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
border: 1px solid $accent;
|
border: 1px solid var(--accent);
|
||||||
padding-top: 60px;
|
padding-top: 60px;
|
||||||
|
|
||||||
p:before {
|
p:before {
|
||||||
@ -217,12 +217,12 @@ blockquote {
|
|||||||
content: '> From Twitter:';
|
content: '> From Twitter:';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 20px;
|
top: 20px;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -237,12 +237,12 @@ table {
|
|||||||
table,
|
table,
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
border: 1px dashed $accent;
|
border: 1px dashed var(--accent);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
ul,
|
ul,
|
||||||
@ -254,7 +254,7 @@ ol {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -263,35 +263,35 @@ ol {
|
|||||||
list-style: none;
|
list-style: none;
|
||||||
counter-reset: li;
|
counter-reset: li;
|
||||||
|
|
||||||
> li {
|
li {
|
||||||
counter-increment: li;
|
counter-increment: li;
|
||||||
|
}
|
||||||
|
|
||||||
&:before {
|
li:before {
|
||||||
content: counter(li);
|
content: counter(li);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: calc(100% + 10px);
|
right: calc(100% + 10px);
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
margin-left: 38px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
counter-increment: li;
|
||||||
}
|
}
|
||||||
|
|
||||||
> ol {
|
li:before {
|
||||||
margin-left: 38px;
|
content: counters(li, ".") " ";
|
||||||
|
|
||||||
> li {
|
|
||||||
counter-increment: li;
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
content: counters(li, ".") " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mark {
|
mark {
|
||||||
background: $accent;
|
background: var(--accent);
|
||||||
color: $background;
|
color: var(--background);
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
@ -312,7 +312,7 @@ mark {
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ mark {
|
|||||||
hr {
|
hr {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
background: $border-color;
|
background: var(--border-color);
|
||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
|
|
@ -1,157 +0,0 @@
|
|||||||
@mixin menu {
|
|
||||||
display: none;
|
|
||||||
flex-direction: column;
|
|
||||||
$shadow-color: transparentize($background, .2);
|
|
||||||
$shadow: 0 10px $shadow-color, -10px 10px $shadow-color, 10px 10px $shadow-color;
|
|
||||||
position: absolute;
|
|
||||||
background: $background;
|
|
||||||
box-shadow: $shadow;
|
|
||||||
color: white;
|
|
||||||
border: 2px solid;
|
|
||||||
margin: 0;
|
|
||||||
padding: 10px;
|
|
||||||
top: 10px;
|
|
||||||
left: 0;
|
|
||||||
list-style: none;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin header-menu-trigger {
|
|
||||||
color: $accent;
|
|
||||||
border: 2px solid;
|
|
||||||
margin-left: 10px;
|
|
||||||
height: 100%;
|
|
||||||
padding: 3px 8px;
|
|
||||||
margin-bottom: 0 !important;
|
|
||||||
position: relative;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navigation-menu {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin: 20px 1px;
|
|
||||||
|
|
||||||
@media ($phone) {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__inner {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
list-style: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
> li {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
&:not(:last-of-type) {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media ($phone) {
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: flex-start;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
li {
|
|
||||||
margin: 0;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.spacer {
|
|
||||||
flex-grow: 1 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
position: relative;
|
|
||||||
list-style: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
&__trigger {
|
|
||||||
margin-right: 0 !important;
|
|
||||||
color: $accent;
|
|
||||||
user-select: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__dropdown {
|
|
||||||
@include menu;
|
|
||||||
|
|
||||||
.open & {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
> li {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
|
|
||||||
&:not(:last-of-type) {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: flex;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&--desktop {
|
|
||||||
@media ($phone) {
|
|
||||||
display: none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&--mobile {
|
|
||||||
.menu__trigger {
|
|
||||||
@include header-menu-trigger;
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
@media ($phone) {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu__dropdown {
|
|
||||||
@media ($phone) {
|
|
||||||
left: auto;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
|
|
||||||
&:not(:last-of-type) {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&--language-selector {
|
|
||||||
.menu__trigger {
|
|
||||||
@include header-menu-trigger;
|
|
||||||
|
|
||||||
@media ($phone) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu__dropdown {
|
|
||||||
left: auto;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -15,8 +15,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
background: $background;
|
background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
color: transparentize($color, .7);
|
|
||||||
font-size: .8rem;
|
font-size: .8rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -38,8 +37,6 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-flow: row wrap;
|
|
||||||
gap: 10px;
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -50,20 +47,22 @@
|
|||||||
.button {
|
.button {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
flex: 1;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
border-radius: 8px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
cursor: pointer;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
@media($phone) {
|
+ .button {
|
||||||
flex: 1;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
|
||||||
flex: 1;
|
|
||||||
padding: 8px 16px;
|
padding: 8px 16px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
@ -3,7 +3,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.framed {
|
.framed {
|
||||||
border: 1px solid $accent;
|
border: 1px solid var(--accent);
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
*:first-child {
|
*:first-child {
|
||||||
@ -25,31 +25,27 @@
|
|||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
padding: 20px 0;
|
padding: 20px 0;
|
||||||
|
|
||||||
|
@media (--tablet) {
|
||||||
|
max-width: 660px;
|
||||||
|
}
|
||||||
|
|
||||||
&:not(:last-of-type) {
|
&:not(:last-of-type) {
|
||||||
border-bottom: 1px solid $border-color;
|
border-bottom: 1px solid var(--border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
&-meta {
|
&-meta {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
color: transparentize($accent, .3);
|
color: color-mod(var(--accent) a(70%));
|
||||||
|
|
||||||
& > *:not(:first-child) {
|
|
||||||
&::before {
|
|
||||||
content: "::";
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&-title {
|
&-title {
|
||||||
$border: 3px dotted $accent;
|
--border: 3px dotted var(--accent);
|
||||||
position: relative;
|
position: relative;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
margin: 0 0 15px;
|
margin: 0 0 15px;
|
||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
border-bottom: $border;
|
border-bottom: var(--border);
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
content: '';
|
content: '';
|
||||||
@ -57,7 +53,7 @@
|
|||||||
bottom: 2px;
|
bottom: 2px;
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-bottom: $border;
|
border-bottom: var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -81,12 +77,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&-cover {
|
&-cover {
|
||||||
border: 20px solid $accent;
|
border: 20px solid var(--accent);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
margin: 40px 0;
|
margin: 40px 0;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
@media ($phone) {
|
@media (--phone) {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-width: 10px;
|
border-width: 10px;
|
||||||
}
|
}
|
||||||
@ -99,7 +95,7 @@
|
|||||||
content: '-';
|
content: '-';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: -20px;
|
left: -20px;
|
||||||
color: $accent;
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -121,7 +117,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.hanchor {
|
.hanchor {
|
||||||
color: transparentize($accent, .1);
|
color: color-mod(var(--accent) alpha(90%));
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
@ -132,5 +128,5 @@ h1:hover a, h2:hover a, h3:hover a, h4:hover a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.footnotes {
|
.footnotes {
|
||||||
color: transparentize($color, .5);
|
color: color-mod(var(--color) alpha(50%));
|
||||||
}
|
}
|
18
assets/css/style.css
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
@import 'variables.css';
|
||||||
|
|
||||||
|
@import 'font.css';
|
||||||
|
@import 'buttons.css';
|
||||||
|
@import 'form.css';
|
||||||
|
|
||||||
|
@import 'header.css';
|
||||||
|
@import 'logo.css';
|
||||||
|
@import 'main.css';
|
||||||
|
@import 'post.css';
|
||||||
|
@import 'pagination.css';
|
||||||
|
@import 'footer.css';
|
||||||
|
|
||||||
|
@import 'prism.css';
|
||||||
|
@import 'syntax.css';
|
||||||
|
@import 'code.css';
|
||||||
|
@import 'terms.css';
|
||||||
|
@import 'gist.css';
|
@ -1,19 +0,0 @@
|
|||||||
@import "variables";
|
|
||||||
|
|
||||||
@import "font";
|
|
||||||
@import "buttons";
|
|
||||||
@import "form";
|
|
||||||
|
|
||||||
@import "header";
|
|
||||||
@import "menu";
|
|
||||||
@import "logo";
|
|
||||||
@import "main";
|
|
||||||
@import "post";
|
|
||||||
@import "pagination";
|
|
||||||
@import "footer";
|
|
||||||
|
|
||||||
@import "prism";
|
|
||||||
@import "syntax";
|
|
||||||
@import "code";
|
|
||||||
@import "terms";
|
|
||||||
@import "gist";
|
|
@ -17,7 +17,7 @@ code.language-scss,
|
|||||||
.token.number,
|
.token.number,
|
||||||
.token.inserted,
|
.token.inserted,
|
||||||
.token.important {
|
.token.important {
|
||||||
color: $accent !important;
|
color: var(--accent) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.tag-id,
|
.token.tag-id,
|
||||||
@ -34,7 +34,7 @@ code.language-scss,
|
|||||||
.token.class-name,
|
.token.class-name,
|
||||||
.token.constant,
|
.token.constant,
|
||||||
.token.symbol {
|
.token.symbol {
|
||||||
color: transparentize($accent, .3) !important;
|
color: color-mod(var(--accent) a(70%)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.property,
|
.token.property,
|
||||||
@ -44,7 +44,7 @@ code.language-scss,
|
|||||||
code.language-javascript,
|
code.language-javascript,
|
||||||
code.language-html,
|
code.language-html,
|
||||||
.command-line-prompt > span:before {
|
.command-line-prompt > span:before {
|
||||||
color: mix($accent, #999, .9) !important;
|
color: color-mod(var(--accent) blend(#999 90%)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.token.selector,
|
.token.selector,
|
||||||
@ -80,7 +80,7 @@ pre[class*="language-"] {
|
|||||||
right: 0;
|
right: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: transparentize(mix($accent, #999, 90%), .92);
|
background: color-mod(var(--accent) blend(#999 90%) a(8%));
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
@ -115,10 +115,13 @@ pre[class*="language-"] {
|
|||||||
content: none;
|
content: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--code-margin: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
.code-toolbar {
|
.code-toolbar {
|
||||||
$code-margin: 40px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: $code-margin 0;
|
margin: var(--code-margin) 0;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
border: 1px solid rgba(255, 255, 255, .1);
|
border: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
@ -126,7 +129,7 @@ pre[class*="language-"] {
|
|||||||
+ .highlight,
|
+ .highlight,
|
||||||
+ .highlight .code-toolbar {
|
+ .highlight .code-toolbar {
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
margin-top: calc(-1 * $code-margin);
|
margin-top: calc(-1 * var(--code-margin));
|
||||||
}
|
}
|
||||||
|
|
||||||
pre, code {
|
pre, code {
|
9
assets/css/terms.css
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.terms {
|
||||||
|
h1 {
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: initial;
|
||||||
|
}
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
.terms {
|
|
||||||
h3 {
|
|
||||||
font-size: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style: none;
|
|
||||||
|
|
||||||
li {
|
|
||||||
a {
|
|
||||||
color: $accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
li:not(:empty):before {
|
|
||||||
content: '-';
|
|
||||||
position: absolute;
|
|
||||||
left: -20px;
|
|
||||||
color: $accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
13
assets/css/variables.css
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
:root {
|
||||||
|
--accent: #FFA86A;
|
||||||
|
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||||
|
--color: white;
|
||||||
|
--border-color: rgba(255, 255, 255, .1);
|
||||||
|
|
||||||
|
/* variables for js, must be the same as these in @custom-media queries */
|
||||||
|
--phoneWidth: (max-width: 684px);
|
||||||
|
--tabletWidth: (max-width: 900px);
|
||||||
|
}
|
||||||
|
|
||||||
|
@custom-media --phone (max-width: 684px);
|
||||||
|
@custom-media --tablet (max-width: 900px);
|
@ -1,8 +0,0 @@
|
|||||||
/* COLOR VARIABLES */
|
|
||||||
$background: mix($accent, #1D1E28, 2%);
|
|
||||||
$color: white;
|
|
||||||
$border-color: rgba(255, 255, 255, .1);
|
|
||||||
|
|
||||||
/* MEDIA QUERIES */
|
|
||||||
$phone: "max-width: 684px";
|
|
||||||
$tablet: "max-width: 900px";
|
|
23
assets/js/languageSelector.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
const mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");
|
||||||
|
const isMobile = () => window.matchMedia(mobileQuery).matches;
|
||||||
|
|
||||||
|
const languageSelector = document.querySelector(".language-selector-current");
|
||||||
|
const moreLanguagesContainer = document.querySelector(".language-selector__more");
|
||||||
|
|
||||||
|
document.body.addEventListener("click", () => {
|
||||||
|
if (
|
||||||
|
!isMobile() &&
|
||||||
|
moreLanguagesContainer &&
|
||||||
|
!moreLanguagesContainer.classList.contains("hidden")
|
||||||
|
) {
|
||||||
|
moreLanguagesContainer.classList.add("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
languageSelector &&
|
||||||
|
languageSelector.addEventListener("click", (e) => {
|
||||||
|
if (!isMobile()) {
|
||||||
|
e.stopPropagation();
|
||||||
|
moreLanguagesContainer.classList.toggle("hidden");
|
||||||
|
}
|
||||||
|
});
|
@ -1,44 +1,51 @@
|
|||||||
const container = document.querySelector(".container");
|
const container = document.querySelector(".container");
|
||||||
const allMenus = document.querySelectorAll(".menu");
|
const menu = document.querySelector(".menu");
|
||||||
|
const mobileMenuTrigger = document.querySelector(".menu-trigger");
|
||||||
|
const desktopMenu = document.querySelector(".menu__inner--desktop");
|
||||||
|
const desktopMenuTrigger = document.querySelector(".menu__sub-inner-more-trigger");
|
||||||
|
const menuMore = document.querySelector(".menu__sub-inner-more");
|
||||||
|
const mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");
|
||||||
|
const isMobile = () => window.matchMedia(mobileQuery).matches;
|
||||||
|
const handleMenuClasses = () => {
|
||||||
|
mobileMenuTrigger && mobileMenuTrigger.classList.toggle("hidden", !isMobile());
|
||||||
|
menu && menu.classList.toggle("hidden", isMobile());
|
||||||
|
menuMore && menuMore.classList.toggle("hidden", !isMobile());
|
||||||
|
};
|
||||||
|
|
||||||
|
// Common
|
||||||
|
|
||||||
|
menu && menu.addEventListener("click", e => e.stopPropagation());
|
||||||
|
menuMore && menuMore.addEventListener("click", e => e.stopPropagation());
|
||||||
|
|
||||||
|
handleMenuClasses();
|
||||||
|
|
||||||
// Hide menus on body click
|
|
||||||
document.body.addEventListener("click", () => {
|
document.body.addEventListener("click", () => {
|
||||||
allMenus.forEach(menu => {
|
if (!isMobile() && menuMore && !menuMore.classList.contains("hidden")) {
|
||||||
if (menu.classList.contains("open")) {
|
menuMore.classList.add("hidden");
|
||||||
menu.classList.remove("open");
|
} else if (isMobile() && !menu.classList.contains("hidden")) {
|
||||||
}
|
menu.classList.add("hidden");
|
||||||
});
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Reset menus on resize
|
window.addEventListener("resize", handleMenuClasses);
|
||||||
window.addEventListener("resize", () => {
|
|
||||||
allMenus.forEach(menu => {
|
|
||||||
menu.classList.remove("open");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Handle desktop menu
|
// Mobile menu
|
||||||
allMenus.forEach(menu => {
|
|
||||||
const trigger = menu.querySelector(".menu__trigger");
|
|
||||||
const dropdown = menu.querySelector(".menu__dropdown");
|
|
||||||
|
|
||||||
trigger.addEventListener("click", e => {
|
mobileMenuTrigger &&
|
||||||
|
mobileMenuTrigger.addEventListener("click", e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
menu && menu.classList.toggle("hidden");
|
||||||
if (menu.classList.contains("open")) {
|
|
||||||
menu.classList.remove("open");
|
|
||||||
} else {
|
|
||||||
// Close all menus...
|
|
||||||
allMenus.forEach(m => m.classList.remove("open"));
|
|
||||||
// ...before opening the current one
|
|
||||||
menu.classList.add("open");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dropdown.getBoundingClientRect().right > container.getBoundingClientRect().right) {
|
|
||||||
dropdown.style.left = "auto";
|
|
||||||
dropdown.style.right = 0;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
dropdown.addEventListener("click", e => e.stopPropagation());
|
// Desktop menu
|
||||||
});
|
|
||||||
|
desktopMenuTrigger &&
|
||||||
|
desktopMenuTrigger.addEventListener("click", e => {
|
||||||
|
e.stopPropagation();
|
||||||
|
menuMore && menuMore.classList.toggle("hidden");
|
||||||
|
|
||||||
|
if (menuMore.getBoundingClientRect().right > container.getBoundingClientRect().right) {
|
||||||
|
menuMore.style.left = "auto";
|
||||||
|
menuMore.style.right = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
[module]
|
|
||||||
[module.hugoVersion]
|
|
||||||
extended = true
|
|
||||||
min = '0.90.0'
|
|
@ -19,16 +19,15 @@
|
|||||||
<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">
|
||||||
{{- if .Date -}}
|
{{- with .Date }}
|
||||||
<time class="post-date">
|
<time class="post-date">
|
||||||
{{- .Date.Format "2006-01-02" -}}
|
{{ .Format "2006-01-02" }}
|
||||||
</time>
|
</time>
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
{{- with .Params.Author -}}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">{{ . }}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if .Params.tags }}
|
{{ if .Params.tags }}
|
||||||
@ -41,26 +40,28 @@
|
|||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
{{ partial "cover.html" . }}
|
{{ partial "cover.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
{{ if .Params.showFullContent }}
|
{{ if .Params.showFullContent }}
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
{{ else if .Description }}
|
{{ else if .Description }}
|
||||||
{{ .Description | markdownify }}
|
{{ .Description | markdownify }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ .Summary }}
|
{{ .Summary | markdownify }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if not .Params.showFullContent }}
|
{{ if not .Params.showFullContent }}
|
||||||
<div>
|
<div>
|
||||||
<a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
<a class="read-more button"
|
||||||
</div>
|
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
||||||
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</article>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partial "pagination.html" . }}
|
{{ partial "pagination.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -11,14 +11,14 @@
|
|||||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||||
</h1>
|
</h1>
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
{{- if .Date -}}
|
{{- with .Date }}
|
||||||
<time class="post-date">
|
<time class="post-date">
|
||||||
{{- .Date.Format "2006-01-02" -}}
|
{{ .Format "2006-01-02" }}
|
||||||
</time>
|
</time>
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
{{- with .Params.Author -}}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">{{- . -}}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if .Params.tags }}
|
{{ if .Params.tags }}
|
||||||
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
{{ partial "cover.html" . }}
|
{{ partial "cover.html" . }}
|
||||||
|
|
||||||
|
|
||||||
<div class="post-content">
|
<div class="post-content">
|
||||||
{{ if .Params.showFullContent }}
|
{{ if .Params.showFullContent }}
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
@ -44,13 +45,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if not .Params.showFullContent }}
|
{{ if not .Params.showFullContent }}
|
||||||
<div>
|
<div>
|
||||||
<a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
<a class="read-more button"
|
||||||
</div>
|
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
||||||
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</article>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partial "pagination.html" . }}
|
{{ partial "pagination.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -1,31 +1,30 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<article class="post">
|
<article class="post">
|
||||||
<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">
|
||||||
{{- if .Date -}}
|
{{ if .Params.Date }}
|
||||||
<time class="post-date">
|
<span class="post-date">
|
||||||
{{- .Date.Format "2006-01-02" -}}
|
<time>{{ .Date.Format "2006-01-02" }}</time>
|
||||||
{{- if $.Site.Params.showLastUpdated -}}
|
{{ if $.Site.Params.showLastUpdated }}
|
||||||
[{{- or $.Site.Params.updatedDatePrefix "Updated" -}} :: {{- .Lastmod.Format "2006-01-02" -}}]
|
[{{or $.Site.Params.updatedDatePrefix "Updated"}}: <time>{{ .Lastmod.Format "2006-01-02" }}</time>]
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
</time>
|
</span>
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
{{- with .Params.Author -}}
|
{{ with .Params.Author }}
|
||||||
<span class="post-author">{{ . }}</span>
|
<span class="post-author">:: {{ . }}</span>
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
{{- if and (.Param "readingTime") (eq (.Param "readingTime") true) -}}
|
{{ if and (.Param "readingTime") (eq (.Param "readingTime") true) }}
|
||||||
<span class="post-reading-time">{{ .ReadingTime }} {{ $.Site.Params.minuteReadingTime | default "min read" }} ({{ .WordCount }} {{ $.Site.Params.words | default "words" }})</span>
|
<span class="post-reading-time">:: {{ .ReadingTime }} min read ({{ .WordCount }} words)</span>
|
||||||
{{- end -}}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if .Params.tags }}
|
{{ if .Params.tags }}
|
||||||
<span class="post-tags">
|
<span class="post-tags">
|
||||||
{{ range .Params.tags }}
|
{{ range .Params.tags }}
|
||||||
#<a href="{{ (urlize (printf "tags/%s/" .)) | absLangURL }}">{{ . }}</a>
|
#<a href="{{ (urlize (printf "tags/%s/" .)) | absLangURL }}">{{ . }}</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ partial "cover.html" . }}
|
{{ partial "cover.html" . }}
|
||||||
|
|
||||||
@ -41,17 +40,17 @@
|
|||||||
<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>
|
||||||
|
|
||||||
{{ if eq .Type $.Site.Params.contentTypeName }}
|
{{ if eq .Type $.Site.Params.contentTypeName }}
|
||||||
{{ partial "posts_pagination.html" . }}
|
{{ partial "posts_pagination.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if not (.Params.hideComments | default false) }}
|
{{ if not (.Params.hideComments | default false) }}
|
||||||
{{ partial "comments.html" . }}
|
{{ partial "comments.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</article>
|
</article>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<h1>Posts for: #{{ .Title }}</h1>
|
|
||||||
{{ with .Content }}
|
|
||||||
<div class="index-content">
|
|
||||||
{{ . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
<div class="posts">
|
|
||||||
{{ range .Paginator.Pages }}
|
|
||||||
<article class="post on-list">
|
|
||||||
<h1 class="post-title">
|
|
||||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
|
||||||
</h1>
|
|
||||||
<div class="post-meta">
|
|
||||||
{{- if .Date -}}
|
|
||||||
<time class="post-date">
|
|
||||||
{{- .Date.Format "2006-01-02" -}}
|
|
||||||
</time>
|
|
||||||
{{- end -}}
|
|
||||||
{{- with .Params.Author -}}
|
|
||||||
<span class="post-author">{{- . -}}</span>
|
|
||||||
{{- end -}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ if .Params.tags }}
|
|
||||||
<span class="post-tags">
|
|
||||||
{{ range .Params.tags }}
|
|
||||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | absLangURL }}">
|
|
||||||
{{- . -}}
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
</span>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ partial "cover.html" . }}
|
|
||||||
|
|
||||||
<div class="post-content">
|
|
||||||
{{ if .Params.showFullContent }}
|
|
||||||
{{ .Content }}
|
|
||||||
{{ else if .Description }}
|
|
||||||
{{ .Description | markdownify }}
|
|
||||||
{{ else }}
|
|
||||||
{{ .Summary }}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ if not .Params.showFullContent }}
|
|
||||||
<div>
|
|
||||||
<a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore }} →</a>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</article>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ partial "pagination.html" . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
@ -1,11 +1,6 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<div class="terms">
|
<div class="terms">
|
||||||
<h1>{{ .Title }}</h1>
|
<h1>{{ .Title }}</h1>
|
||||||
{{ with .Content }}
|
|
||||||
<div class="index-content">
|
|
||||||
{{ . }}
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
<ul>
|
<ul>
|
||||||
{{ $type := .Type }}
|
{{ $type := .Type }}
|
||||||
{{ range $key, $value := .Data.Terms.Alphabetical }}
|
{{ range $key, $value := .Data.Terms.Alphabetical }}
|
||||||
@ -13,7 +8,7 @@
|
|||||||
{{ $count := .Count }}
|
{{ $count := .Count }}
|
||||||
{{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
{{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
||||||
<li>
|
<li>
|
||||||
<a class="terms-title" href="{{ .Permalink }}">{{ .Name }} [{{ $count }}]</a>
|
<a class="terms-title" href="{{ .Permalink }}">{{ .Name }} ({{ $count }})</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -5,19 +5,19 @@
|
|||||||
<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="https://gohugo.io">Hugo</a></span>
|
<span>© {{ now.Year }} Powered by <a href="http://gohugo.io">Hugo</a></span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
|
<span>:: Theme made by <a href="https://twitter.com/panr">panr</a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
{{ $menu := resources.Get "js/menu.js" | js.Build }}
|
<script src="{{ "assets/main.js" | absURL }}"></script>
|
||||||
{{ $prism := resources.Get "js/prism.js" | js.Build }}
|
<script src="{{ "assets/prism.js" | absURL }}"></script>
|
||||||
|
|
||||||
{{ $bundle := slice $menu $prism | resources.Concat "bundle.js" | resources.Minify }}
|
{{ if $.Site.Params.showLanguageSelector }}
|
||||||
|
<script src="{{ "assets/languageSelector.js" | absURL }}"></script>
|
||||||
<script type="text/javascript" src="{{ $bundle.RelPermalink }}"></script>
|
{{ end }}
|
||||||
|
|
||||||
<!-- Extended footer section-->
|
<!-- Extended footer section-->
|
||||||
{{ partial "extended_footer.html" . }}
|
{{ partial "extended_footer.html" . }}
|
||||||
|
@ -2,31 +2,17 @@
|
|||||||
<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 if .Description}}{{ .Description | plainify }}{{ 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 }}" />
|
||||||
{{ if .Params.noindex }}
|
<meta name="robots" content="noodp" />
|
||||||
{{ if or (eq (.Param "noindex") true) (eq (.Param "noindex") "true") }}
|
|
||||||
<meta name="robots" content="noindex" />
|
|
||||||
{{ end }}
|
|
||||||
{{ else }}
|
|
||||||
<meta name="robots" content="noodp" />
|
|
||||||
{{ end }}
|
|
||||||
<link rel="canonical" href="{{ .Permalink }}" />
|
<link rel="canonical" href="{{ .Permalink }}" />
|
||||||
|
|
||||||
{{ template "_internal/google_analytics.html" . }}
|
{{ template "_internal/google_analytics.html" . }}
|
||||||
|
|
||||||
{{ $defaultStyles := resources.Get "css/style.scss" }}
|
<!-- Theme CSS -->
|
||||||
<!-- Local Theme Variables -->
|
<link rel="stylesheet" href="{{ "assets/style.css" | absURL }}">
|
||||||
{{ if and (isset .Params "color") (not (eq .Params.color "")) }}
|
{{ if (isset .Params "color") }}
|
||||||
{{ $localColorCss := resources.Get (printf "css/color/%s.scss" .Params.color) }}
|
<link rel="stylesheet" href="{{ (printf "assets/%s.css" .Params.color) | absURL }}">
|
||||||
{{ $localCss := slice $localColorCss $defaultStyles | resources.Concat (printf "css/%s-local.scss" .Params.color) }}
|
{{ else if and (ne $.Site.Params.ThemeColor "orange") (ne $.Site.Params.ThemeColor "color" "") }}
|
||||||
{{ $localColorStyles := $localCss | resources.ToCSS }}
|
<link rel="stylesheet" href="{{ (printf "assets/%s.css" $.Site.Params.ThemeColor) | absURL }}">
|
||||||
<link rel="stylesheet" href="{{ $localColorStyles.Permalink }}">
|
|
||||||
{{ else }}
|
|
||||||
<!-- Theme Variables -->
|
|
||||||
{{ $colorCss := resources.Get (printf "css/color/%s.scss" ($.Site.Params.ThemeColor | default "orange")) }}
|
|
||||||
{{ $css := slice $colorCss $defaultStyles | resources.Concat "css/base.scss" }}
|
|
||||||
{{ $options := (dict "targetPath" "styles.css" "outputStyle" "compressed" "enableSourceMap" true "precision" 6 "includePaths" (slice "node_modules")) }}
|
|
||||||
{{ $styles := $css | resources.ToCSS $options }}
|
|
||||||
<link rel="stylesheet" href="{{ $styles.Permalink }}">
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Custom CSS to override theme properties (/static/style.css) -->
|
<!-- Custom CSS to override theme properties (/static/style.css) -->
|
||||||
@ -35,11 +21,11 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
<!-- Icons -->
|
<!-- Icons -->
|
||||||
|
<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 }}
|
||||||
<link rel="shortcut icon" href="{{ printf "img/theme-colors/%s.png" (or .Params.color $.Site.Params.ThemeColor | default "orange") | absURL }}">
|
<link rel="shortcut icon" href="{{ printf "img/favicon/%s.png" ($.Site.Params.ThemeColor | default "orange") | absURL }}">
|
||||||
<link rel="apple-touch-icon" href="{{ printf "img/theme-colors/%s.png" (or .Params.color $.Site.Params.ThemeColor | default "orange") | absURL }}">
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Twitter Card -->
|
<!-- Twitter Card -->
|
||||||
@ -58,12 +44,8 @@
|
|||||||
<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="{{ $.Site.Title }}" />
|
<meta property="og:site_name" content="{{ $.Site.Title }}" />
|
||||||
{{ if (isset .Params "cover") }}
|
{{ if and (not .IsHome) (isset .Params "cover") }}
|
||||||
{{ $pageCover := .Param "cover" }}
|
<meta property="og:image" content="{{ .Param "cover" | absURL }}">
|
||||||
{{ with (.Resources.GetMatch (.Param "cover")) }}
|
|
||||||
{{ $pageCover = .RelPermalink }}
|
|
||||||
{{ end }}
|
|
||||||
<meta property="og:image" content="{{ $pageCover | absURL }}">
|
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ if isset $.Site.Params "favicon" }}
|
{{ if isset $.Site.Params "favicon" }}
|
||||||
<meta property="og:image" content="{{ $.Site.Params.favicon | absURL }}">
|
<meta property="og:image" content="{{ $.Site.Params.favicon | absURL }}">
|
||||||
@ -71,8 +53,8 @@
|
|||||||
<meta property="og:image" content="{{ printf "img/favicon/%s.png" $.Site.Params.ThemeColor | absURL }}">
|
<meta property="og:image" content="{{ printf "img/favicon/%s.png" $.Site.Params.ThemeColor | absURL }}">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<meta property="og:image:width" content="1200">
|
<meta property="og:image:width" content="2048">
|
||||||
<meta property="og:image:height" content="627">
|
<meta property="og:image:height" content="1024">
|
||||||
{{ range .Params.categories }}
|
{{ range .Params.categories }}
|
||||||
<meta property="article:section" content="{{ . }}" />
|
<meta property="article:section" content="{{ . }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -4,10 +4,7 @@
|
|||||||
{{ partial "logo.html" . }}
|
{{ partial "logo.html" . }}
|
||||||
</div>
|
</div>
|
||||||
{{ if len $.Site.Menus }}
|
{{ if len $.Site.Menus }}
|
||||||
{{ partial "mobile-menu.html" . }}
|
<div class="menu-trigger">menu</div>
|
||||||
{{ end }}
|
|
||||||
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
|
||||||
{{ partial "language-menu.html" . }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ if len $.Site.Menus }}
|
{{ if len $.Site.Menus }}
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
<ul class="menu menu--desktop menu--language-selector">
|
|
||||||
<li class="menu__trigger">{{ .Language.LanguageName }} ▾</li>
|
|
||||||
<li>
|
|
||||||
<ul class="menu__dropdown">
|
|
||||||
{{ range $.Site.Home.AllTranslations }}
|
|
||||||
<li><a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
@ -1,33 +1,60 @@
|
|||||||
<nav class="navigation-menu">
|
<nav class="menu">
|
||||||
<ul class="navigation-menu__inner menu--desktop">
|
<ul class="menu__inner menu__inner--desktop">
|
||||||
{{ 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 }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .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 }}
|
||||||
<li>
|
<ul class="menu__sub-inner">
|
||||||
<ul class="menu">
|
<li class="menu__sub-inner-more-trigger">{{ $.Site.Params.MenuMore }} ▾</li>
|
||||||
<li class="menu__trigger">{{ $.Site.Params.MenuMore }} ▾</li>
|
|
||||||
<li>
|
<ul class="menu__sub-inner-more hidden">
|
||||||
<ul class="menu__dropdown">
|
{{ 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 }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
<li><a href="{{ .URL }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .Name }}</a></li>
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</ul>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ range $.Site.Menus.main }}
|
{{ range $.Site.Menus.main }}
|
||||||
{{ if not .HasChildren }}
|
{{ if not .HasChildren }}
|
||||||
<li><a href="{{ .URL }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .Name }}</a></li>
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<ul class="language-selector">
|
||||||
|
<ul class="language-selector-current">
|
||||||
|
<li>{{ .Language.LanguageName }} ▾</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="language-selector__more hidden">
|
||||||
|
{{ range $.Site.Home.AllTranslations }}
|
||||||
|
<li><a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul class="menu__inner menu__inner--mobile">
|
||||||
|
{{ range $.Site.Menus.main }}
|
||||||
|
{{ if not .HasChildren }}
|
||||||
|
<li><a href="{{ .URL }}" {{ if .Params.NewTab }} target="_blank" {{ end }}>{{ .Name }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
||||||
|
<hr />
|
||||||
|
{{ range $.Site.Home.AllTranslations }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
<ul class="menu menu--mobile">
|
|
||||||
<li class="menu__trigger">Menu ▾</li>
|
|
||||||
<li>
|
|
||||||
<ul class="menu__dropdown">
|
|
||||||
{{ range $.Site.Menus.main }}
|
|
||||||
{{ if not .HasChildren }}
|
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
|
||||||
<hr />
|
|
||||||
{{ range $.Site.Home.AllTranslations }}
|
|
||||||
<li>
|
|
||||||
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
@ -1,16 +1,20 @@
|
|||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<div class="pagination__buttons">
|
<div class="pagination__buttons">
|
||||||
{{ if .Paginator.HasPrev }}
|
{{ if .Paginator.HasPrev }}
|
||||||
<a href="{{ .Paginator.Prev.URL }}" class="button previous">
|
<span class="button previous">
|
||||||
<span class="button__icon">←</span>
|
<a href="{{ .Paginator.Prev.URL }}">
|
||||||
<span class="button__text">{{ $.Site.Params.newerPosts | default "Newer posts" }}</span>
|
<span class="button__icon">←</span>
|
||||||
</a>
|
<span class="button__text">{{ $.Site.Params.newerPosts | default "Newer posts" }}</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Paginator.HasNext }}
|
{{ if .Paginator.HasNext }}
|
||||||
<a href="{{ .Paginator.Next.URL }}" class="button next">
|
<span class="button next">
|
||||||
<span class="button__text">{{ $.Site.Params.olderPosts | default "Older posts" }}</span>
|
<a href="{{ .Paginator.Next.URL }}">
|
||||||
<span class="button__icon">→</span>
|
<span class="button__text">{{ $.Site.Params.olderPosts | default "Older posts" }}</span>
|
||||||
</a>
|
<span class="button__icon">→</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
{{ if .Get "src" }}
|
{{ if .Get "src" }}
|
||||||
<img src="{{ .Get "src" | safeURL }}" {{ with .Get "alt" }} alt="{{ . | plainify }}" {{ end }} class="{{ with .Get "position"}}{{ . }}{{ else -}} left {{- end }}" {{ with .Get "style" }} style="{{ . | safeCSS }}" {{ end }} {{ with .Get "width" }} width="{{ . | plainify }}" {{ end }} {{ with .Get "height" }} height="{{ . | plainify }}" {{ end }} />
|
<img src="{{ .Get "src" | safeURL }}" {{ with .Get "alt" }} alt="{{ . | plainify }}" {{ end }} class="{{ with .Get "position"}}{{ . }}{{ else -}} left {{- end }}" {{ with .Get "style" }} style="{{ . | safeCSS }}" {{ end }} />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
>{{ $inner }}</code></pre>
|
>{{ $inner }}</code></pre>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<pre class="language-{{ .Get 0 }}">
|
<pre class="language-{{ .Get 0 }}">
|
||||||
<code class="language-{{ .Get 0 }}">{{ $inner }}</code>
|
<code class="language-{{ .Get 0 }}">{{ $inner }}</code></pre>
|
||||||
</pre>
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
6743
package-lock.json
generated
@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
|
|
||||||
"browserslist": [
|
|
||||||
"last 2 versions",
|
|
||||||
">1%",
|
|
||||||
"not dead"
|
|
||||||
],
|
|
||||||
"comments": {
|
|
||||||
"dependencies": {
|
|
||||||
"yarn": "project"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"browserslist": "project",
|
|
||||||
"clipboard": "project",
|
|
||||||
"eslint-config-airbnb": "project",
|
|
||||||
"eslint-config-prettier": "project",
|
|
||||||
"eslint-plugin-jsx-a11y": "project",
|
|
||||||
"husky": "project"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"yarn": "^1.22.10"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"browserslist": "^4.16.5",
|
|
||||||
"clipboard": "^2.0.4",
|
|
||||||
"eslint-config-airbnb": "^18.2.0",
|
|
||||||
"eslint-config-prettier": "^8.1.0",
|
|
||||||
"eslint-plugin-jsx-a11y": "^6.2.1",
|
|
||||||
"husky": "^5.1.3"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "index.js",
|
|
||||||
"name": "terminal",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo 'Test'"
|
|
||||||
},
|
|
||||||
"version": "2.1.0"
|
|
||||||
}
|
|
65
package.json
@ -1,43 +1,60 @@
|
|||||||
{
|
{
|
||||||
"name": "terminal",
|
"name": "terminal",
|
||||||
"version": "3.1.0",
|
"version": "2.1.0",
|
||||||
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
|
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
|
||||||
"test": "echo 'Test'"
|
|
||||||
},
|
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"last 2 versions",
|
"last 2 versions",
|
||||||
">1%",
|
">1%",
|
||||||
"not dead"
|
"not dead"
|
||||||
],
|
],
|
||||||
"comments": {
|
"scripts": {
|
||||||
"dependencies": {
|
"dev": "webpack --mode=development --watch",
|
||||||
"yarn": "project"
|
"build": "webpack --mode=production"
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"browserslist": "project",
|
|
||||||
"clipboard": "project",
|
|
||||||
"eslint-config-airbnb": "project",
|
|
||||||
"eslint-config-prettier": "project",
|
|
||||||
"eslint-plugin-jsx-a11y": "project",
|
|
||||||
"husky": "project"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"yarn": "^1.22.10"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@babel/cli": "^7.2.3",
|
||||||
|
"@babel/core": "^7.2.2",
|
||||||
|
"@babel/parser": "^7.4.2",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.2.0",
|
||||||
|
"@babel/preset-env": "^7.3.1",
|
||||||
|
"@babel/preset-stage-2": "^7.0.0",
|
||||||
|
"angular-html-parser": "^1.2.0",
|
||||||
|
"babel-eslint": "^10.1.0",
|
||||||
|
"babel-loader": "^8.0.5",
|
||||||
"browserslist": "^4.16.5",
|
"browserslist": "^4.16.5",
|
||||||
|
"clean-webpack-plugin": "^3.0.0",
|
||||||
"clipboard": "^2.0.4",
|
"clipboard": "^2.0.4",
|
||||||
"eslint": "^7.32.0",
|
"css-loader": "^5.1.3",
|
||||||
|
"cssnano": "^5.0.8",
|
||||||
"eslint-config-airbnb": "^18.2.0",
|
"eslint-config-airbnb": "^18.2.0",
|
||||||
"eslint-config-prettier": "^8.1.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",
|
||||||
"husky": "^5.1.3",
|
"husky": "^5.1.3",
|
||||||
"stylelint": "^14.14.1",
|
"mini-css-extract-plugin": "^1.3.9",
|
||||||
"stylelint-config-prettier-scss": "^0.0.1",
|
"postcss": "^8.2.10",
|
||||||
"stylelint-config-standard-scss": "^6.1.0"
|
"postcss-browser-reporter": "^0.6.0",
|
||||||
|
"postcss-cli": "^8.3.1",
|
||||||
|
"postcss-color-function": "^4.0.1",
|
||||||
|
"postcss-color-mod-function": "^3.0.3",
|
||||||
|
"postcss-import": "^14.0.0",
|
||||||
|
"postcss-loader": "^5.2.0",
|
||||||
|
"postcss-mixins": "^7.0.3",
|
||||||
|
"postcss-nested": "^5.0.5",
|
||||||
|
"postcss-preset-env": "^6.7.0",
|
||||||
|
"postcss-reporter": "^7.0.2",
|
||||||
|
"postcss-url": "^10.1.3",
|
||||||
|
"prettier-eslint-cli": "^5.0.0",
|
||||||
|
"ramda": "^0.27.1",
|
||||||
|
"style-loader": "^2.0.0",
|
||||||
|
"terser-webpack-plugin": "^5.1.1",
|
||||||
|
"url-loader": "^4.1.0",
|
||||||
|
"webpack": "^5.27.1",
|
||||||
|
"webpack-cli": "^4.5.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"yarn": "^1.22.10"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
static/assets/2078a57b79d547bf1e2502f8d249b867.woff
Normal file
BIN
static/assets/58cebbe9a6bdcba6d4bb56a22a9e812f.woff
Normal file
1
static/assets/blue.css
Normal file
1
static/assets/green.css
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"]()})();
|
4
static/assets/main.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(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"]()})();
|
1
static/assets/pink.css
Normal file
4
static/assets/prism.js
Normal file
1
static/assets/red.css
Normal file
1
static/assets/style.css
Normal file
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 189 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 189 B |
@ -5,7 +5,7 @@ description = "A simple, retro theme for Hugo."
|
|||||||
homepage = "https://github.com/panr/hugo-theme-terminal/"
|
homepage = "https://github.com/panr/hugo-theme-terminal/"
|
||||||
tags = ["blog", "clean", "customizable", "dark", "highlighting", "minimal", "monotone", "multilingual", "personal", "responsive", "simple", "technical", "retro"]
|
tags = ["blog", "clean", "customizable", "dark", "highlighting", "minimal", "monotone", "multilingual", "personal", "responsive", "simple", "technical", "retro"]
|
||||||
features = ["blog", "shortcode", "syntax highlighting"]
|
features = ["blog", "shortcode", "syntax highlighting"]
|
||||||
min_version = 0.90
|
min_version = 0.74
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
name = "panr"
|
name = "panr"
|
||||||
|
104
webpack.config.js
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
||||||
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||||
|
const TerserPlugin = require("terser-webpack-plugin");
|
||||||
|
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const join = (...paths) => path.join(__dirname, ...paths);
|
||||||
|
|
||||||
|
module.exports = (env, { mode }) => ({
|
||||||
|
resolve: {
|
||||||
|
extensions: [".js", ".css"],
|
||||||
|
modules: ["assets", "node_modules"],
|
||||||
|
},
|
||||||
|
entry: {
|
||||||
|
main: join("assets", "js", "menu.js"),
|
||||||
|
languageSelector: join("assets", "js", "languageSelector.js"),
|
||||||
|
prism: join("assets", "js", "prism.js"),
|
||||||
|
style: join("assets", "css", "style.css"),
|
||||||
|
red: join("assets", "css", "color", "red.css"),
|
||||||
|
blue: join("assets", "css", "color", "blue.css"),
|
||||||
|
green: join("assets", "css", "color", "green.css"),
|
||||||
|
pink: join("assets", "css", "color", "pink.css"),
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
filename: "[name].js",
|
||||||
|
path: join("static/assets"),
|
||||||
|
publicPath: "",
|
||||||
|
},
|
||||||
|
performance: {
|
||||||
|
hints: false,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.js$/,
|
||||||
|
exclude: /node_modules/,
|
||||||
|
use: {
|
||||||
|
loader: "babel-loader",
|
||||||
|
options: {
|
||||||
|
presets: ["@babel/preset-env"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.(png|jpg|woff|woff2|ttf|eot|svg)$/,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: "url-loader",
|
||||||
|
options: {
|
||||||
|
limit: 8192,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
use: [
|
||||||
|
MiniCssExtractPlugin.loader,
|
||||||
|
{
|
||||||
|
loader: "css-loader",
|
||||||
|
options: {
|
||||||
|
modules: {
|
||||||
|
localIdentName: "[local]",
|
||||||
|
},
|
||||||
|
import: true,
|
||||||
|
importLoaders: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"postcss-loader",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
splitChunks: {
|
||||||
|
name: "vendor",
|
||||||
|
minChunks: 2,
|
||||||
|
},
|
||||||
|
minimize: true,
|
||||||
|
minimizer: [
|
||||||
|
new TerserPlugin({
|
||||||
|
parallel: true,
|
||||||
|
extractComments: false,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new CleanWebpackPlugin({
|
||||||
|
cleanOnceBeforeBuildPatterns: [join("static/assets")],
|
||||||
|
cleanAfterEveryBuildPatterns: [
|
||||||
|
join("static/assets/style.js"),
|
||||||
|
join("static/assets/blue.js"),
|
||||||
|
join("static/assets/green.js"),
|
||||||
|
join("static/assets/red.js"),
|
||||||
|
join("static/assets/pink.js"),
|
||||||
|
],
|
||||||
|
verbose: true,
|
||||||
|
}),
|
||||||
|
new MiniCssExtractPlugin({
|
||||||
|
filename: "[name].css",
|
||||||
|
chunkFilename: "[id].css",
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|