84 Commits

Author SHA1 Message Date
a283ea88b5 fix a font related bug provided in d9eccf6 2024-10-16 09:29:24 +02:00
d9eccf6127 move font features to @font-face declaration (closes #489) 2024-10-16 09:10:03 +02:00
21620ae214 Merge pull request #487 from imortio/patch-1
Update USERS.md
2024-10-10 16:42:54 +02:00
a5f5687065 Update USERS.md
add my website to list, because i am using this beautiful theme
2024-10-10 21:06:49 +07:00
0edfefba5d update LICENSE year 2024-10-10 08:14:54 +02:00
7177f517c1 Merge pull request #484 from adamperkowski/users_me
add adamperkowski.dev to `USERS.md`
2024-10-10 08:12:54 +02:00
35e0dcdde2 add adamperkowski.dev 2024-10-10 02:23:49 +02:00
170db40535 Merge pull request #483 from Lurgrid/master
Add www.sagbot.com to USER.md list
2024-09-22 22:44:26 +02:00
a507c01a0a Add www.sagbot.com to USER.md list 2024-09-22 15:04:11 +02:00
b6c2bafbdc fix list template .Description 2024-09-07 23:43:48 +02:00
3c03c1b0ea update README 2024-09-07 23:27:10 +02:00
c57581a3b3 fix read more link
closes #480
2024-09-07 23:27:10 +02:00
9cee0bf239 Merge pull request #468 from amtoine/add-katex-support-to-community-features
add KaTeX support as a community feature
2024-09-06 18:52:41 +02:00
a45f003c7a update marketing stuff v2 2024-08-31 12:07:54 +02:00
241ee05a3b update preview image for terminal.css 2024-08-30 19:22:52 +02:00
75878308e0 update base terminal.css to the new default scheme 2024-08-30 08:16:38 +02:00
d2397d672d fix headings, buttons and make it adaptable for updated terminal.css 2024-08-29 12:35:56 +02:00
ff186322b8 Update README.md 2024-08-25 09:59:05 +02:00
e5605c55e6 update screenshot 2024-08-21 23:36:41 +02:00
48c5fac46c update preview images for Hugo Themes 2024-08-21 23:09:20 +02:00
0de06b5630 update theme.toml 2024-08-21 19:14:41 +02:00
90ffc5e80e update theme.toml 2024-08-21 16:39:03 +02:00
4995ec9ae9 update README
- update DEMO website link
2024-08-21 15:48:15 +02:00
d00310f46e Fix README for language settings 2024-08-21 15:43:02 +02:00
bd69f691b6 Update config to match latest version of Hugo 2024-08-21 15:24:41 +02:00
0b11e05735 we are back with 4.0 2024-08-21 15:06:28 +02:00
7e13d24d10 farewell! 2023-06-10 18:02:22 +02:00
3a5a676118 fixes after PRs 2023-06-10 00:27:17 +02:00
4a8f9aa798 Merge pull request #473 from icy-comet/fix_css_var
delete unused css vars
2023-06-09 23:38:28 +02:00
c560d941ae Merge pull request #463 from blakeashleyjr/patch-1
Update main.scss to fix footnote counting issue
2023-06-09 23:38:15 +02:00
653c3a1b7e Merge pull request #460 from Thunder33345/taxonomy-title
Added heading to term pages
2023-06-09 23:37:19 +02:00
bcbd22ba8a Merge pull request #459 from Thunder33345/patch-1
Show content if available in terms.html
2023-06-09 23:34:12 +02:00
7926417fc8 Merge pull request #461 from Thunder33345/stray-decoration
Fixed stray `::` when there's no other content to show
2023-06-09 23:33:27 +02:00
52ab4d5609 Update USERS.md 2023-06-09 23:32:02 +02:00
e121cb427f Merge pull request #439 from cizordj/patch-1
Update the image shortcode
2023-06-09 23:30:16 +02:00
b49a0c1ae5 Update .gitignore 2023-06-09 23:28:59 +02:00
10f6da7e8d Merge pull request #426 from T2hhbmEK/feat/rm-resources
cleanup: rm resources directory
2023-06-09 23:28:11 +02:00
3760c42316 Merge pull request #427 from T2hhbmEK/feat/tasklist
Fix broken checkbox styles
2023-06-09 23:27:20 +02:00
8b0eca9632 Merge pull request #440 from cizordj/patch-2
Fix little typo in the README
2023-06-09 23:24:30 +02:00
e1f667702c Merge pull request #434 from larsks/fix/USERS
Remove broken links from USERS.md
2023-06-09 23:24:11 +02:00
051275fd7a Merge branch 'master' into fix/USERS 2023-06-09 23:24:02 +02:00
7d877e0fcd Merge pull request #448 from Kitchvx/patch-1
Update USERS.md
2023-06-09 23:22:27 +02:00
4a42c4df0a Merge branch 'master' into patch-1 2023-06-09 23:22:22 +02:00
a0c0370113 Merge pull request #437 from domgoodwin/patch-1
Update USERS.md
2023-06-09 23:21:21 +02:00
672ab557a4 Merge branch 'master' into patch-1 2023-06-09 23:21:15 +02:00
70f40eb3e1 Merge pull request #428 from Sir-Photch/patch-1
Update USERS.md
2023-06-09 23:20:44 +02:00
05bbfa3050 Merge branch 'master' into patch-1 2023-06-09 23:20:03 +02:00
e1355294e7 Merge pull request #423 from Drew-Morris/patch-1
Update USERS.md
2023-06-09 23:19:43 +02:00
3a9b3bffef Merge pull request #472 from PolaricEntropy/PolaricEntropy-patch-1
Fix non-https link to gohugo.io
2023-06-09 19:15:31 +02:00
ef7108798b Fix non-https link to gohugo.io
Fixes the non-secure link to gohugo.io, which sometimes causes security suites to present a warning about non-secure external links
2023-06-05 23:47:46 +02:00
7910e41eb6 add my fork to the list of community features 2023-05-18 12:23:29 +02:00
3a04ec15a5 delete unused css vars 2023-05-06 19:38:57 +05:30
fb50e39b15 Update main.scss to use nesting with & 2023-05-02 08:33:13 -07:00
0085fc68b9 Update main.scss to fix footnote counting issue 2023-05-01 15:30:04 -07:00
729543fbd1 apply decorator fix 2023-04-30 22:17:16 +08:00
823168e161 changed decorators for single 2023-04-30 21:44:59 +08:00
32df60e801 moved :: decoration position
this hides it if there's no post author to show
2023-04-30 21:34:08 +08:00
e76c7ebb66 added heading to term pages 2023-04-27 00:54:20 +08:00
74e7e40de1 Add option to show content in terms.html 2023-04-26 23:50:25 +08:00
9726b8d806 Allow target="_blank" with .Params.NewTab set to true
This commit belongs to the PR: https://github.com/panr/hugo-theme-terminal/pull/370

by @matidfk
2023-04-13 23:24:56 +02:00
dd74597617 Update USERS.md 2023-03-24 20:35:38 +00:00
641c5a27ac Merge pull request #447 from cizordj/patch-3
Remove duplicated robots tag
2023-03-23 08:07:02 +01:00
a81c5ae24f Remove duplicated robots tag
Closes #446
2023-03-22 20:22:42 -03:00
1252b09ca9 Fix little typo in the README 2023-03-06 20:30:01 -03:00
5aac274434 Update the image shortcode
- Add both width and height attributes
2023-03-06 20:21:08 -03:00
194fc9b1c3 Update USERS.md 2023-02-26 11:27:49 +00:00
5d7c29f916 Remove broken links from USERS.md
I was looking for example sites and encountered several broken links in
USERS.md. This commit removes all links that have connection problems.
Links were verified using the script in [1].

A complete list of the removed links is included below.

[1]: https://gist.github.com/larsks/87763718da69eaced3c8901cc7e27ae8

- Removed https://thecodecousins.com: failed to connect
- Removed https://dawsonverboven.com/: failed to connect
- Removed https://geekx.tech/: failed to connect
- Removed https://ssgram.dev: failed to connect
- Removed https://schacherbauer.dev: failed to connect
- Removed https://waterloos.niflheimr.blue/: failed to connect
- Removed https://security.jtang.dev: ssl error (bad certificate?)
- Removed https://wjdevschool.com/: failed to connect
- Removed https://rinma.dev: ssl error (bad certificate?)
- Removed https://conight.com: 403 Client Error: Forbidden for url: https://conight.com/
- Removed https://markopolo123.github.io: 404 Client Error: Not Found for url: https://markopolo123.github.io/
- Removed https://openfoxblog.leven.dev/: ssl error (bad certificate?)
- Removed https://mickie1.gitlab.io/blog/: 503 Server Error: Service Temporarily Unavailable for url: https://gitlab.com/users/sign_in
- Removed https://cristiioan.me: ssl error (bad certificate?)
- Removed https://1mup.myorange.house: failed to connect
- Removed https://bg117.xyz/projects: failed to connect
- Removed https://nazdarthegame.com/: ssl error (bad certificate?)
- Removed https://dongzhi.me: 400 Client Error: Bad Request for url: https://dongzhi.me/
2023-02-14 14:49:43 -05:00
5e4e359e89 Update USERS.md
just as a notice, in case you want to keep this USERS.md update; There are multiple links not pointing to hugo-theme-terminal sites, as far as I can see.
2023-01-31 18:10:38 +01:00
f069aede2d add support for tasklist checkbox 2023-01-31 18:47:23 +08:00
75c034ddd3 rm resources directory 2023-01-31 14:47:52 +08:00
35e18fcf2c Update USERS.md 2023-01-28 13:29:53 -07:00
2b14b3d4e5 Merge pull request #417 from T2hhbmEK/fix/summary
fix summary not showing
2023-01-21 23:12:58 +01:00
1093ce9610 fix summary not showing 2023-01-21 23:20:14 +08:00
9e657da94a Merge pull request #415 from florianbieser/FeatureNoindexAttribute
option to set an attribute noindex in front-matter for some sites
2023-01-20 19:08:30 +01:00
bf0dc1643b Merge pull request #414 from florianbieser/FeatureReadingtimeI18N
option to write the reading time in the same language as the site
2023-01-20 00:32:18 +01:00
3d894d14be correct behaviour even if boolean is written as string 2023-01-19 17:07:38 +01:00
415337451b 4 spaces instead of 1 tab 2023-01-19 17:03:35 +01:00
e06649f8c8 option to set an attribute noindex in front-matter for some sites 2023-01-18 16:55:33 +01:00
de960997bc option to write the reading time in the same language as the site 2023-01-18 16:51:20 +01:00
94d8927676 Merge pull request #412 from AntonioGarosi/patch-1
Update USERS.md
2023-01-17 22:22:57 +01:00
12d439387d Update USERS.md 2023-01-17 20:51:02 +01:00
7fa36fe0ee Merge pull request #408 from QuLogic/min-version
Add required version to config
2023-01-04 09:01:35 +01:00
1f676558df Update README.md 2023-01-04 08:50:14 +01:00
893ded398f Add required version to config
This should generate a warning from hugo if using the standard build, or
an old one.
2023-01-03 20:41:08 -05:00
75 changed files with 2115 additions and 1794 deletions

2
.gitignore vendored
View File

@ -88,6 +88,6 @@ typings/
.dynamodb/ .dynamodb/
# End of https://www.gitignore.io/api/node # End of https://www.gitignore.io/api/node
public public
resources
.hugo_build.lock .hugo_build.lock

View File

@ -4,7 +4,9 @@
"stylelint-config-prettier-scss" "stylelint-config-prettier-scss"
], ],
"rules": { "rules": {
"max-empty-lines": 1 "max-empty-lines": 1,
"color-function-notation": null,
"no-descending-specificity": null,
"selector-class-pattern": null
} }
} }

View File

@ -23,3 +23,7 @@ eg:
- **Single Page Website** (https://github.com/justinnuwin/hugo-theme-terminal) - **Single Page Website** (https://github.com/justinnuwin/hugo-theme-terminal)
- A layout where the homepage can render lists of pages and the navigation menu can link to sections on the homepage. - A layout where the homepage can render lists of pages and the navigation menu can link to sections on the homepage.
- Justin Nguyen, software and hardware developer. - Justin Nguyen, software and hardware developer.
- **Support for beautiful *KaTeX* formulae** ([amtoine/hugo-theme-terminal-katex](https://github.com/amtoine/hugo-theme-terminal-katex))
- SHORT DESCRIPTION
- Antoine Stevan ([@amtoine](https://github.com/amtoine)), software engineer into open source

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2019 panr Copyright (c) 2024 panr
Permission is hereby granted, free of charge, to any person obtaining a copy of Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in this software and associated documentation files (the "Software"), to deal in

View File

@ -1,9 +1,14 @@
# Terminal # Terminal
![Terminal](https://github.com/panr/hugo-theme-terminal/blob/master/images/screenshot.png?raw=true) **Demo: https://panr.github.io/hugo-theme-terminal-demo/**
### DEMO - https://hugo-terminal.now.sh/ **Create your own color scheme: https://panr.github.io/terminal-css/**
### ⚠️ The theme needs at least Hugo **Extended** v0.90.x.
![Terminal](https://github.com/panr/hugo-theme-terminal/blob/master/images/terminal-theme.png?raw=true)
---
⚠️ The theme needs at least Hugo **Extended** v0.90.x.
--- ---
@ -19,11 +24,11 @@
- [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)
- [Licence](#licence) - [License](#license)
## Features ## Features
- **5 duotone themes**, depending on your preferences (orange is default, red, blue, green, pink) - fully customizable color schemes generated by [**Terminal.css**](https://panr.github.io/terminal-css/).
- [**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
@ -99,7 +104,7 @@ You can also choose **one of the 3 possibilities** to install the theme:
# you fetch the theme module. # you fetch the theme module.
# #
# hugo mod init [your website/module name] # hugo mod init [your website/module name]
hugo mod get github.com/panr/hugo-theme-terminal hugo mod get github.com/panr/hugo-theme-terminal/v4
``` ```
and in your config file add: and in your config file add:
@ -107,9 +112,9 @@ and in your config file add:
```toml ```toml
[module] [module]
# this is needed when you fetch the theme as a submodule to your repo. # this is needed when you fetch the theme as a submodule to your repo.
# replacements = "github.com/panr/hugo-theme-terminal -> themes/terminal" # replacements = "github.com/panr/hugo-theme-terminal/4 -> themes/terminal"
[[module.imports]] [[module.imports]]
path = 'github.com/panr/hugo-theme-terminal' path = 'github.com/panr/hugo-theme-terminal/v4'
``` ```
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/). 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/).
@ -163,9 +168,6 @@ paginate = 5
# the list of set content will show up on your index page (baseurl). # the list of set content will show up on your index page (baseurl).
contentTypeName = "posts" contentTypeName = "posts"
# ["orange", "blue", "red", "green", "pink"]
themeColor = "orange"
# if you set this to 0, only submenu trigger will be visible # if you set this to 0, only submenu trigger will be visible
showMenuItems = 2 showMenuItems = 2
@ -187,15 +189,9 @@ paginate = 5
# If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated # If you use git, you can set `enableGitInfo` to `true` and then post will automatically get the last updated
showLastUpdated = false showLastUpdated = false
# set a custom favicon (default is a `themeColor` square)
# favicon = "favicon.ico"
# Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author # Provide a string as a prefix for the last update date. By default, it looks like this: 2020-xx-xx [Updated: 2020-xx-xx] :: Author
# updatedDatePrefix = "Updated" # updatedDatePrefix = "Updated"
# set all headings to their default size (depending on browser settings)
# oneHeadingSize = true # default
# whether to show a page's estimated reading time # whether to show a page's estimated reading time
# readingTime = false # default # readingTime = false # default
@ -219,6 +215,8 @@ paginate = 5
[languages.en] [languages.en]
languageName = "English" languageName = "English"
title = "Terminal" title = "Terminal"
[languages.en.params]
subtitle = "A simple, retro theme for Hugo" subtitle = "A simple, retro theme for Hugo"
owner = "" owner = ""
keywords = "" keywords = ""
@ -230,6 +228,8 @@ 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"
@ -249,13 +249,11 @@ paginate = 5
# In case you would like to make changes to the theme and keep it locally in you repository, # 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). # uncomment the line below (and correct the local path if necessary).
# -- # --
# replacements = "github.com/panr/hugo-theme-terminal -> themes/terminal" # replacements = "github.com/panr/hugo-theme-terminal/v4 -> themes/terminal"
[[module.imports]] [[module.imports]]
path = 'github.com/panr/hugo-theme-terminal' path = 'github.com/panr/hugo-theme-terminal/v4'
``` ```
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).
**NOTE:** Please keep in mind that currently `main menu` doesn't support nesting. **NOTE:** Please keep in mind that currently `main menu` doesn't support nesting.
## Post archetype ## Post archetype
@ -302,6 +300,6 @@ I'd be happy to know more about you and what you are doing. If you want to share
## License ## License
Copyright © 2019-2022 Radosław Kozieł ([@panr](https://twitter.com/panr)) Copyright © 2019-2024 Radosław Kozieł ([@panr](https://twitter.com/panr))
The theme is released under the MIT License. Check the [original theme license](https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md) for additional licensing information. The theme is released under the MIT License. Check the [original theme license](https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md) for additional licensing information.

View File

@ -1,27 +1,20 @@
# 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)
@ -30,13 +23,9 @@
- 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://wjdevschool.com/ **Wojciech Bogócki** (Making Things & Teaching / W&J Dev School)
- https://erisianrite.com/ **ErisianRite** (Coding, Engineering, Tools for Thought) - https://erisianrite.com/ **ErisianRite** (Coding, Engineering, Tools for Thought)
- 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)
@ -44,8 +33,6 @@
- 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)
@ -55,20 +42,27 @@
- 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)
- https://www.sagbot.com **E. HADDAG** (Computer Scientist)
- https://adamperkowski.dev **Adam Perkowski** (A Random Developer)
- https://imortio.github.io **Azrul** (CompSci Student)
<!-- <!--
TEMPLATE: TEMPLATE:
- https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer) - https://radoslawkoziel.pl **Radek Kozieł** (Software Designer and Developer)
--> -->

View File

@ -10,5 +10,4 @@ description = ""
showFullContent = false showFullContent = false
readingTime = false readingTime = false
hideComments = false hideComments = false
color = "" #color from the theme settings
+++ +++

123
assets/css/buttons.css Normal file
View File

@ -0,0 +1,123 @@
.button-container {
display: table;
margin-left: auto;
margin-right: auto;
}
button,
.button,
a.button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 18px;
text-decoration: none;
text-align: center;
border-radius: 8;
font: inherit;
font-weight: bold;
appearance: none;
cursor: pointer;
outline: none;
}
button.outline,
.button.outline,
a.button.outline {
background: transparent;
box-shadow: none;
padding: 8px 18px;
}
button.outline :hover,
.button.outline :hover,
a.button.outline :hover {
transform: none;
box-shadow: none;
}
button.link,
.button.link,
a.button.link {
background: none;
font-size: 1rem;
}
button.small,
.button.small,
a.button.small {
font-size: 0.8rem;
}
button.wide,
.button.wide,
a.button.wide {
min-width: 200px;
padding: 14px 24px;
}
a.button.inline {
background: none;
color: var(--accent);
padding: initial;
margin: initial;
border: initial;
font-weight: initial;
text-decoration: none;
}
a.button.inline:active,
a.button.inline:hover {
background: none;
}
a.button.inline::before {
content: "["
}
a.button.inline::after {
content: "]"
}
a.button.inline.prev::before {
content: "← ["
}
a.button.inline.next::after {
content: "] →"
}
a.read-more,
a.read-more:hover,
a.read-more:active {
display: inline-flex;
border: none;
background: none;
box-shadow: none;
padding: 0;
max-width: 100%;
text-decoration: none;
}
.code-toolbar {
margin-bottom: 20px;
}
.code-toolbar .toolbar-item a {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 8px;
margin-bottom: 5px;
text-decoration: none;
text-align: center;
font-size: 13px;
font-weight: 500;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
}

View File

@ -1,95 +0,0 @@
.button-container {
display: table;
margin-left: auto;
margin-right: auto;
}
button,
.button,
a.button {
position: relative;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 18px;
margin-bottom: 5px;
text-decoration: none;
text-align: center;
border-radius: 8;
border: 1px solid $accent;
background: $accent;
color: $background;
font: inherit;
font-weight: bold;
appearance: none;
cursor: pointer;
outline: none;
&:hover {
background: transparentize($accent, .1);
}
/* variants */
&.outline {
background: transparent;
box-shadow: none;
padding: 8px 18px;
:hover {
transform: none;
box-shadow: none;
}
}
&.link {
background: none;
font-size: 1rem;
}
/* sizes */
&.small {
font-size: .8rem;
}
&.wide {
min-width: 200px;
padding: 14px 24px;
}
}
a.read-more,
a.read-more:hover,
a.read-more:active {
display: inline-flex;
border: none;
color: $accent;
background: none;
box-shadow: none;
padding: 0;
margin: 20px 0;
max-width: 100%;
}
.code-toolbar {
margin-bottom: 20px;
.toolbar-item a {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 8px;
margin-bottom: 5px;
text-decoration: none;
text-align: center;
font-size: 13px;
font-weight: 500;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
}
}

117
assets/css/code.css Normal file
View File

@ -0,0 +1,117 @@
pre {
margin: 20px 0;
}
.code-toolbar {
position: relative;
margin: 20px 0;
border: 1px solid color-mix(in srgb, var(--accent) 10%, transparent);
}
.code-toolbar + .code-toolbar,
.code-toolbar + .highlight,
.code-toolbar + .highlight .code-toolbar {
border-top: 0;
margin-top: -20px;
}
.code-toolbar pre, .code-toolbar code {
border: none;
}
.code-toolbar code {
display: block;
color: color-mix(in srgb, var(--accent) 50%, var(--foreground));
}
.code-toolbar > .toolbar button {
font-size: 0.8em !important;
font-weight: bold !important;
background: var(--accent) !important;
color: var(--background) !important;
border-radius: var(--radius) !important;
box-shadow: none !important;
border: 1px solid var(--background) !important;
margin: 6px !important;
padding: 10px !important;
user-select: none;
}
.collapsable-code {
position: relative;
width: 100%;
margin: 40px 0;
}
.collapsable-code input[type=checkbox] {
position: absolute;
visibility: hidden;
}
.collapsable-code input[type=checkbox]:checked ~ pre,
.collapsable-code input[type=checkbox]:checked ~ .code-toolbar pre {
display: none;
}
.collapsable-code input[type=checkbox]:checked ~ .code-toolbar {
padding: 0;
border-top: none;
}
.collapsable-code input[type=checkbox]:checked ~ .code-toolbar .toolbar {
display: none;
}
.collapsable-code input[type=checkbox]:checked ~ label .collapsable-code__toggle::after {
content: attr(data-label-expand);
}
.collapsable-code label {
position: relative;
display: flex;
justify-content: space-between;
min-width: 30px;
min-height: 30px;
margin: 0;
border-bottom: 1px solid var(--accent);
cursor: pointer;
}
.collapsable-code__title {
flex: 1;
color: var(--accent);
padding: 3px 10px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.collapsable-code__language {
color: var(--accent);
border: 1px solid var(--accent);
border-bottom: none;
text-transform: uppercase;
padding: 3px 10px;
}
.collapsable-code__toggle {
color: var(--accent);
font-size: 16px;
padding: 3px 10px;
}
.collapsable-code__toggle::after {
content: attr(data-label-collapse);
}
.collapsable-code pre {
margin-top: 0;
}
.collapsable-code pre::first-line {
line-height: 0;
}
.collapsable-code .code-toolbar {
margin: 0;
}

View File

@ -1,84 +0,0 @@
.collapsable-code {
$border-color: mix($accent, #999, 90%);
position: relative;
width: 100%;
margin: 40px 0;
input[type="checkbox"] {
position: absolute;
visibility: hidden;
}
input[type="checkbox"]:checked {
~ pre,
~ .code-toolbar pre {
height: 0;
padding: 0;
border-top: none;
}
~ .code-toolbar {
padding: 0;
border-top: none;
.toolbar {
display: none;
}
}
~ label .collapsable-code__toggle:after {
content: attr(data-label-expand);
}
}
label {
position: relative;
display: flex;
justify-content: space-between;
min-width: 30px;
min-height: 30px;
margin: 0;
border-bottom: 1px solid $border-color;
cursor: pointer;
}
&__title {
flex: 1;
color: $accent;
padding: 3px 10px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&__language {
color: $accent;
border: 1px solid $border-color;
border-bottom: none;
text-transform: uppercase;
padding: 3px 10px;
}
&__toggle {
color: $accent;
font-size: 16px;
padding: 3px 10px;
&:after {
content: attr(data-label-collapse);
}
}
pre {
margin-top: 0;
&::first-line {
line-height: 0;
}
}
.code-toolbar {
margin: 0;
}
}

View File

@ -1 +0,0 @@
$accent: #23B0FF;

View File

@ -1 +0,0 @@
$accent: #78E2A0;

View File

@ -1 +0,0 @@
$accent: #FFA86A;

View File

@ -1 +0,0 @@
$accent: #EE72F1;

View File

@ -1 +0,0 @@
$accent: #FF6266;

View File

@ -1,15 +0,0 @@
@font-face {
font-display: swap;
font-family: 'Fira Code';
font-style: normal;
font-weight: 400;
src: url("../fonts/FiraCode-Regular.woff") format("woff");
}
@font-face {
font-display: swap;
font-family: 'Fira Code';
font-style: normal;
font-weight: 800;
src: url("../fonts/FiraCode-Bold.woff") format("woff");
}

19
assets/css/fonts.css Normal file
View File

@ -0,0 +1,19 @@
@font-face {
font-display: swap;
font-family: "Fira Code";
font-style: normal;
font-weight: 400;
src: url("../fonts/FiraCode-Regular.woff") format("woff");
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
font-variant-ligatures: contextual;
}
@font-face {
font-display: swap;
font-family: "Fira Code";
font-style: normal;
font-weight: 800;
src: url("../fonts/FiraCode-Bold.woff") format("woff");
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
font-variant-ligatures: contextual;
}

46
assets/css/footer.css Normal file
View File

@ -0,0 +1,46 @@
.footer {
padding: 40px 0;
flex-grow: 0;
opacity: 0.5;
}
.footer__inner {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
width: 760px;
max-width: 100%;
}
.footer a {
color: inherit;
}
.footer .copyright {
display: flex;
flex-flow: row wrap;
flex: 1;
align-items: center;
font-size: 1rem;
justify-content: center;
}
.footer .copyright--user {
margin: auto;
text-align: center;
}
.footer .copyright > *:first-child:not(:only-child) {
margin-right: 10px;
}
.footer .copyright span {
white-space: nowrap;
}
@media (max-width: 900px) {
.footer__inner {
flex-direction: column;
}
}

View File

@ -1,44 +0,0 @@
.footer {
padding: 40px 0;
flex-grow: 0;
opacity: .5;
&__inner {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
width: 760px;
max-width: 100%;
@media ($tablet) {
flex-direction: column;
}
}
a {
color: inherit;
}
.copyright {
display: flex;
flex-flow: row wrap;
flex: 1;
align-items: center;
font-size: 1rem;
justify-content: center;
&--user {
margin: auto;
text-align: center;
}
& > *:first-child:not(:only-child) {
margin-right: 10px;
}
span {
white-space: nowrap;
}
}
}

View File

@ -1,30 +0,0 @@
input, textarea, select {
background: transparent;
color: $accent;
border: 1px solid $accent;
border-radius: 0;
padding: 10px;
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);
}

4
assets/css/gist.css Normal file
View File

@ -0,0 +1,4 @@
body .gist .blob-num,
body .gist .blob-code-inner {
border: none;
}

View File

@ -1,6 +0,0 @@
body .gist .blob-num /* line numbers */,
body .gist .blob-code-inner
{
border: none;
}

45
assets/css/header.css Normal file
View File

@ -0,0 +1,45 @@
.header {
display: flex;
flex-direction: column;
position: relative;
}
.header__inner {
display: flex;
align-items: center;
justify-content: space-between;
}
.header__logo {
display: flex;
flex: 1;
}
.header__logo::after {
content: "";
background: repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);
display: block;
width: 100%;
right: 10px;
}
.header__logo a {
flex: 0 0 auto;
max-width: 100%;
text-decoration: none;
}
.logo {
display: flex;
align-items: center;
text-decoration: none;
background: var(--accent);
color: var(--background);
padding: 5px 10px;
}
@media print {
.header {
display: none;
}
}

View File

@ -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;
}
}
}

View File

@ -1,8 +0,0 @@
.logo {
display: flex;
align-items: center;
text-decoration: none;
background: $accent;
color: black;
padding: 5px 10px;
}

167
assets/css/main.css Normal file
View File

@ -0,0 +1,167 @@
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 0;
font-family: "Fira Code", Monaco, Consolas, "Ubuntu Mono", monospace;
font-size: 1rem;
line-height: 1.54;
letter-spacing: -0.02em;
background-color: var(--background);
color: var(--foreground);
text-rendering: optimizelegibility;
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
text-size-adjust: 100%;
}
.headings--one-size h1,
.headings--one-size h2,
.headings--one-size h3,
.headings--one-size h4,
.headings--one-size h5,
.headings--one-size h6 {
font-size: 1.4rem;
line-height: 1.3;
margin: 20px 0;
}
.headings--one-size ~ h1:first-child,
.headings--one-size ~ h2:first-child,
.headings--one-size ~ h3:first-child,
.headings--one-size ~ h4:first-child,
.headings--one-size ~ h5:first-child,
.headings--one-size ~ h6:first-child {
margin-top: 20px;
}
img.left {
margin-right: auto;
}
img.center {
margin-left: auto;
margin-right: auto;
}
img.right {
margin-left: auto;
}
figure.left {
margin-right: auto;
}
figure.center {
margin-left: auto;
margin-right: auto;
}
figure.right {
margin-left: auto;
}
figure figcaption.left {
text-align: left;
}
figure figcaption.center {
text-align: center;
}
figure figcaption.right {
text-align: right;
}
blockquote.twitter-tweet {
position: relative;
background: var(--background);
font: inherit;
color: inherit;
border: 1px solid var(--accent);
padding-top: 60px;
}
blockquote.twitter-tweet a {
color: var(--accent);
text-decoration: underline;
}
blockquote.twitter-tweet::before {
content: "> From X:";
position: absolute;
top: 20px;
left: 20px;
color: var(--accent);
font-weight: bold;
}
.container {
display: flex;
flex-direction: column;
padding: 40px;
max-width: 864px;
min-height: 100vh;
border-right: 1px solid color-mix(in srgb, var(--accent) 10%, transparent);
}
.container.full, .container.center {
border: none;
margin: 0 auto;
}
.container.full {
max-width: 100%;
}
.content {
display: flex;
flex-direction: column;
}
.hidden {
display: none;
}
.__h_video {
padding-bottom: 58.23% !important;
overflow: visible !important;
}
iframe[src*="youtube.com"] {
border: 8px solid var(--accent) !important;
padding: 8px !important;
}
@media (max-width: 684px) {
body {
font-size: 1rem;
}
.container {
padding: 20px;
}
ul,
ol {
margin-left: 20px;
}
}
@media print {
.container {
display: initial;
}
.content {
display: initial;
}
}

View File

@ -1,346 +0,0 @@
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 0;
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;
font-size: 1rem;
line-height: 1.54;
letter-spacing: -0.02em;
background-color: $background;
color: $color;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
font-variant-ligatures: contextual;
-webkit-overflow-scrolling: touch;
-webkit-text-size-adjust: 100%;
@media ($phone) {
font-size: 1rem;
}
}
.headings--one-size {
h1,
h2,
h3,
h4,
h5,
h6 {
line-height: 1.3;
&:not(first-child) {
margin-top: 40px;
}
}
h1,
h2,
h3 {
font-size: 1.4rem;
}
h4,
h5,
h6 {
font-size: 1.2rem;
}
}
a {
color: inherit;
/* Waiting for a better times... */
/* &:has(code) {
text-decoration-color: $accent;
} */
}
img {
display: block;
max-width: 100%;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
}
p {
margin-bottom: 20px;
}
figure {
display: table;
max-width: 100%;
margin: 25px 0;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
figcaption {
font-size: 14px;
padding: 5px 10px;
margin-top: 5px;
background: $accent;
color: $background;
/* opacity: .8; */
&.left {
text-align: left;
}
&.center {
text-align: center;
}
&.right {
text-align: right;
}
}
}
code, kbd {
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
font-feature-settings: normal;
background: transparentize($accent, .8);
color: $accent;
padding: 1px 6px;
margin: 0 2px;
font-size: .95rem;
code, kbd {
background: transparent;
padding: 0;
margin: 0;
}
}
pre {
background: transparent !important;
padding: 20px 10px;
margin: 40px 0;
font-size: .95rem !important;
overflow: auto;
border-top: 1px solid rgba(255, 255, 255, .1);
border-bottom: 1px solid rgba(255, 255, 255, .1);
+ pre {
border-top: 0;
margin-top: -40px;
}
@media ($phone) {
white-space: pre-wrap;
word-wrap: break-word;
}
code {
background: none !important;
margin: 0;
padding: 0;
font-size: inherit;
border: none;
}
}
blockquote {
border-top: 1px solid $accent;
border-bottom: 1px solid $accent;
margin: 40px 0;
padding: 25px;
@media ($phone) {
padding-right: 0;
}
p:first-of-type {
margin-top: 0;
}
p:last-of-type {
margin-bottom: 0;
}
p {
position: relative;
}
p:first-of-type:before {
content: '>';
display: block;
position: absolute;
left: -25px;
color: $accent;
}
&.twitter-tweet {
position: relative;
background: transparentize($accent, .9);
font: inherit;
color: inherit;
border: 1px solid $accent;
padding-top: 60px;
p:before {
content: '';
}
&:before {
content: '> From Twitter:';
position: absolute;
top: 20px;
color: $accent;
font-weight: bold;
}
a {
color: $accent;
}
}
}
table {
table-layout: auto;
border-collapse: collapse;
width: 100%;
margin: 40px 0;
}
table,
th,
td {
border: 1px dashed $accent;
padding: 10px;
}
th {
color: $accent;
}
ul,
ol {
margin-left: 22px;
padding: 0;
li {
position: relative;
}
@media ($phone) {
margin-left: 20px;
}
}
ol {
list-style: none;
counter-reset: li;
li {
counter-increment: li;
}
li:before {
content: counter(li);
position: absolute;
right: calc(100% + 10px);
color: $accent;
display: inline-block;
text-align: right;
}
ol {
margin-left: 38px;
li {
counter-increment: li;
}
li:before {
content: counters(li, ".") " ";
}
}
}
mark {
background: $accent;
color: $background;
}
.container {
display: flex;
flex-direction: column;
padding: 40px;
max-width: 864px;
min-height: 100vh;
border-right: 1px solid rgba(255, 255, 255, 0.1);
&.full,
&.center {
border: none;
margin: 0 auto;
}
&.full {
max-width: 100%;
}
@media ($phone) {
padding: 20px;
}
@media print {
display: initial;
}
}
.content {
display: flex;
flex-direction: column;
@media print {
display: initial;
}
}
hr {
width: 100%;
border: none;
background: $border-color;
height: 1px;
}
.hidden {
display: none;
}
sup {
line-height: 0;
}

148
assets/css/menu.css Normal file
View File

@ -0,0 +1,148 @@
.navigation-menu {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin: 20px 1px;
}
.navigation-menu__inner {
display: flex;
flex: 1;
flex-wrap: wrap;
list-style: none;
margin: 0;
padding: 0;
}
.navigation-menu__inner > li {
flex: 0 0 auto;
margin-bottom: 10px;
white-space: nowrap;
}
.navigation-menu__inner > li:not(:last-of-type) {
margin-right: 20px;
}
.navigation-menu .spacer {
flex-grow: 1 !important;
}
.menu {
display: flex;
flex-direction: column;
position: relative;
list-style: none;
padding: 0;
margin: 0;
}
.menu__trigger {
margin-right: 0 !important;
color: var(--accent);
user-select: none;
cursor: pointer;
}
.menu__dropdown {
display: none;
flex-direction: column;
position: absolute;
background: var(--background);
box-shadow: 0 10px var(--background), -10px 10px var(--background), 10px 10px var(--background);
color: var(--accent);
border: 2px solid var(--accent);
margin: 0;
padding: 10px;
top: 10px;
left: 0;
list-style: none;
z-index: 99;
}
.open .menu__dropdown {
display: flex;
}
.menu__dropdown > li {
flex: 0 0 auto;
}
.menu__dropdown > li:not(:last-of-type) {
margin-bottom: 10px;
}
.menu__dropdown > li a {
display: flex;
padding: 5px;
}
.menu--mobile .menu__trigger {
color: var(--accent);
border: 2px solid;
margin-left: 10px;
height: 100%;
padding: 3px 8px;
margin-bottom: 0 !important;
position: relative;
cursor: pointer;
display: none;
}
.menu--mobile li {
flex: 0 0 auto;
}
.menu--mobile li:not(:last-of-type) {
margin-bottom: 10px;
}
.menu--language-selector .menu__trigger {
color: var(--accent);
border: 2px solid;
margin-left: 10px;
height: 100%;
padding: 3px 8px;
margin-bottom: 0 !important;
position: relative;
cursor: pointer;
}
.menu--language-selector .menu__dropdown {
left: auto;
right: 0;
}
@media (max-width: 684px) {
.navigation-menu {
margin: 0;
}
.navigation-menu__inner {
flex-direction: column;
align-items: flex-start;
padding: 0;
}
.navigation-menu__inner li {
margin: 0;
padding: 5px;
}
.menu--desktop {
display: none;
}
.menu--mobile .menu__trigger {
display: block;
}
.menu--mobile .menu__dropdown {
left: auto;
right: 0;
}
.menu--language-selector .menu__trigger {
display: none;
}
}

View File

@ -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;
}
}
}

96
assets/css/pagination.css Normal file
View File

@ -0,0 +1,96 @@
.pagination {
margin-top: 50px;
}
.pagination__title {
display: flex;
text-align: center;
position: relative;
margin: 100px 0 20px;
}
.pagination__title-h {
text-align: center;
margin: 0 auto;
padding: 5px 10px;
background: var(--background);
color: color-mix(in srgb var(--foreground) 30%, transparent);
font-size: 0.8rem;
text-transform: uppercase;
text-decoration: none;
letter-spacing: 0.1em;
z-index: 1;
}
.pagination__title hr {
position: absolute;
left: 0;
right: 0;
width: 100%;
margin-top: 15px;
z-index: 0;
}
.pagination__buttons {
display: flex;
align-items: center;
justify-content: center;
flex-flow: row wrap;
gap: 10px;
}
.pagination__buttons a {
display: inline-flex;
max-width: 100%;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
text-decoration: none;
}
.button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 1rem;
padding: 0;
appearance: none;
}
.button a {
display: flex;
justify-content: center;
flex: 1;
padding: 8px 16px;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.button__text {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.next .button__icon {
margin-left: 8px;
}
.prev .button__icon {
margin-right: 8px;
}
@media (max-width: 684px) {
.button {
flex: 1;
}
}
@media print {
.pagination {
display: none;
}
}

View File

@ -1,87 +0,0 @@
.pagination {
margin-top: 50px;
@media print {
display: none;
}
&__title {
display: flex;
text-align: center;
position: relative;
margin: 100px 0 20px;
&-h {
text-align: center;
margin: 0 auto;
padding: 5px 10px;
background: $background;
color: transparentize($color, .7);
font-size: .8rem;
text-transform: uppercase;
text-decoration: none;
letter-spacing: .1em;
z-index: 1;
}
hr {
position: absolute;
left: 0;
right: 0;
width: 100%;
margin-top: 15px;
z-index: 0;
}
}
&__buttons {
display: flex;
align-items: center;
justify-content: center;
flex-flow: row wrap;
gap: 10px;
a {
text-decoration: none;
}
}
}
.button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 1rem;
padding: 0;
appearance: none;
@media($phone) {
flex: 1;
}
a {
display: flex;
justify-content: center;
flex: 1;
padding: 8px 16px;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&__text {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&.next .button__icon {
margin-left: 8px;
}
&.previous .button__icon {
margin-right: 8px;
}
}

141
assets/css/post.css Normal file
View File

@ -0,0 +1,141 @@
.index-content {
margin-top: 20px;
}
.framed {
border: 1px solid var(--accent);
padding: 20px;
}
.framed *:first-child {
margin-top: 0;
}
.framed *:last-child {
margin-bottom: 0;
}
.posts {
width: 100%;
}
.post {
width: 100%;
text-align: left;
padding: 40px 0;
}
.post:not(:last-of-type) {
border-bottom: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
}
.post-meta {
font-size: 1rem;
margin-bottom: 10px;
color: color-mix(in srgb, var(--foreground) 50%, transparent);
}
.post-meta > *:not(:first-child)::before {
content: "::";
display: inline-block;
margin: 0 8px;
}
.post-title {
position: relative;
color: var(--accent);
margin-top: 0 !important;
margin-bottom: 15px !important;
padding-bottom: 15px;
border-bottom: 3px dotted var(--accent);
text-decoration: none !important;
}
.post-title::after {
content: "";
position: absolute;
bottom: 2px;
display: block;
width: 100%;
border-bottom: 3px dotted var(--accent);
}
.post-title a {
text-decoration: none;
}
.post-tags {
display: block;
margin-bottom: 20px;
font-size: 1rem;
color: var(--accent);
}
.table-of-contents {
margin: 40px 0;
}
.post-content {
margin-top: 30px;
}
.post-cover {
margin: 40px 0;
}
.post ul {
list-style: none;
}
.post ul li:not(:empty)::before {
content: "-";
position: absolute;
left: -20px;
color: var(--accent);
}
.post--regulation h1 {
justify-content: center;
}
.post--regulation h2 {
justify-content: center;
margin-bottom: 10px;
}
.post--regulation h2 + h2 {
margin-top: -10px;
margin-bottom: 20px;
}
.hanchor {
position: absolute;
color: var(--accent);
text-decoration: none;
margin-left: 10px;
visibility: hidden;
}
h1:hover .hanchor,
h2:hover .hanchor,
h3:hover .hanchor,
h4:hover .hanchor,
h5:hover .hanchor,
h6:hover .hanchor {
visibility: visible;
}
.footnotes {
color: color-mix(in srgb, var(--foreground) 50%, transparent);
}
.footnotes hr {
background: color-mix(in srgb, var(--foreground) 50%, transparent);
}
@media (max-width: 684px) {
.post-cover {
padding: 10px;
border-width: 10px;
}
}

View File

@ -1,128 +0,0 @@
.index-content {
margin-top: 20px;
}
.framed {
border: 1px solid $accent;
padding: 20px;
*:first-child {
margin-top: 0;
}
*:last-child {
margin-bottom: 0;
}
}
.posts {
width: 100%;
}
.post {
width: 100%;
text-align: left;
margin: 20px auto;
padding: 20px 0;
&:not(:last-of-type) {
border-bottom: 1px solid $border-color;
}
&-meta {
font-size: 1rem;
margin-bottom: 10px;
color: transparentize($accent, .3);
}
&-title {
$border: 3px dotted $accent;
position: relative;
color: $accent;
margin: 0 0 15px;
padding-bottom: 15px;
border-bottom: $border;
&:after {
content: '';
position: absolute;
bottom: 2px;
display: block;
width: 100%;
border-bottom: $border;
}
a {
text-decoration: none;
}
}
&-tags {
display: block;
margin-bottom: 20px;
font-size: 1rem;
opacity: .5;
a {
text-decoration: none;
}
}
&-content {
margin-top: 30px;
}
&-cover {
border: 20px solid $accent;
background: transparent;
margin: 40px 0;
padding: 20px;
@media ($phone) {
padding: 10px;
border-width: 10px;
}
}
ul {
list-style: none;
li:not(:empty):before {
content: '-';
position: absolute;
left: -20px;
color: $accent;
}
}
}
.post--regulation {
h1 {
justify-content: center;
}
h2 {
justify-content: center;
margin-bottom: 10px;
& + h2 {
margin-top: -10px;
margin-bottom: 20px;
}
}
}
.hanchor {
color: transparentize($accent, .1);
text-decoration: none;
margin-left: 10px;
visibility: hidden;
}
h1:hover a, h2:hover a, h3:hover a, h4:hover a {
visibility: visible;
}
.footnotes {
color: transparentize($color, .5);
}

322
assets/css/prism.css Normal file
View File

@ -0,0 +1,322 @@
/* PrismJS 1.24.1
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */
/**
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
* Based on https://github.com/chriskempson/tomorrow-theme
* @author Rose Pritchard
*/
code[class*=language-],
pre[class*=language-] {
color: #ccc;
background: none;
font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
tab-size: 4;
hyphens: none;
}
/* Code blocks */
pre[class*=language-] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*=language-],
pre[class*=language-] {
background: #2d2d2d;
}
/* Inline code */
:not(pre) > code[class*=language-] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.block-comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #999;
}
.token.punctuation {
color: #ccc;
}
.token.tag,
.token.attr-name,
.token.namespace,
.token.deleted {
color: #e2777a;
}
.token.function-name {
color: #6196cc;
}
.token.boolean,
.token.number,
.token.function {
color: #f08d49;
}
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: #f8c555;
}
.token.selector,
.token.important,
.token.atrule,
.token.keyword,
.token.builtin {
color: #cc99cd;
}
.token.string,
.token.char,
.token.attr-value,
.token.regex,
.token.variable {
color: #7ec699;
}
.token.operator,
.token.entity,
.token.url {
color: #67cdcc;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.token.inserted {
color: green;
}
pre[data-line] {
position: relative;
padding: 1em 0 1em 3em;
}
.line-highlight {
position: absolute;
left: 0;
right: 0;
padding: inherit 0;
margin-top: 1em;
/* Same as .prisms padding-top */
background: hsla(24deg, 20%, 50%, 8%);
background: linear-gradient(to right, hsla(24deg, 20%, 50%, 10%) 70%, hsla(24deg, 20%, 50%, 0%));
pointer-events: none;
line-height: inherit;
white-space: pre;
}
@media print {
.line-highlight {
/*
* This will prevent browsers from replacing the background color with white.
* It's necessary because the element is layered on top of the displayed code.
*/
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
}
.line-highlight::before,
.line-highlight[data-end]::after {
content: attr(data-start);
position: absolute;
top: 0.4em;
left: 0.6em;
min-width: 1em;
padding: 0 0.5em;
background-color: hsla(24deg, 20%, 50%, 40%);
color: hsl(24deg, 20%, 95%);
font: bold 65%/1.5 sans-serif;
text-align: center;
vertical-align: 0.3em;
border-radius: 999px;
text-shadow: none;
box-shadow: 0 1px white;
}
.line-highlight[data-end]::after {
content: attr(data-end);
top: auto;
bottom: 0.4em;
}
.line-numbers .line-highlight::before,
.line-numbers .line-highlight::after {
content: none;
}
pre[id].linkable-line-numbers span.line-numbers-rows {
pointer-events: all;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span::before {
cursor: pointer;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover::before {
background-color: rgba(128, 128, 128, 20%);
}
pre[class*=language-].line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber;
}
pre[class*=language-].line-numbers > code {
position: relative;
white-space: inherit;
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em;
/* works for line-numbers below 1000 lines */
letter-spacing: -1px;
border-right: 1px solid #999;
user-select: none;
}
.line-numbers-rows > span {
display: block;
counter-increment: linenumber;
}
.line-numbers-rows > span::before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: 0.8em;
text-align: right;
}
.command-line-prompt {
border-right: 1px solid #999;
display: block;
float: left;
font-size: 100%;
letter-spacing: -1px;
margin-right: 1em;
pointer-events: none;
user-select: none;
}
.command-line-prompt > span::before {
color: #999;
content: " ";
display: block;
padding-right: 0.8em;
}
.command-line-prompt > span[data-user]::before {
content: "["attr(data-user) "@"attr(data-host) "] $";
}
.command-line-prompt > span[data-user=root]::before {
content: "["attr(data-user) "@"attr(data-host) "] #";
}
.command-line-prompt > span[data-prompt]::before {
content: attr(data-prompt);
}
div.code-toolbar {
position: relative;
}
div.code-toolbar > .toolbar {
position: absolute;
top: 0.3em;
right: 0.2em;
transition: opacity 0.3s ease-in-out;
opacity: 0;
}
div.code-toolbar:hover > .toolbar {
opacity: 1;
}
/* Separate line b/c rules are thrown out if selector is invalid.
IE11 and old Edge versions don't support :focus-within. */
div.code-toolbar:focus-within > .toolbar {
opacity: 1;
}
div.code-toolbar > .toolbar > .toolbar-item {
display: inline-block;
}
div.code-toolbar > .toolbar > .toolbar-item > a {
cursor: pointer;
}
div.code-toolbar > .toolbar > .toolbar-item > button {
background: none;
border: 0;
color: inherit;
font: inherit;
line-height: normal;
overflow: visible;
padding: 0;
/* for button */
user-select: none;
}
div.code-toolbar > .toolbar > .toolbar-item > a,
div.code-toolbar > .toolbar > .toolbar-item > button,
div.code-toolbar > .toolbar > .toolbar-item > span {
color: #bbb;
font-size: 0.8em;
padding: 0 0.5em;
background: #f5f2f0;
background: rgba(224, 224, 224, 20%);
box-shadow: 0 2px 0 0 rgba(0, 0, 0, 20%);
border-radius: 0.5em;
}
div.code-toolbar > .toolbar > .toolbar-item > a:hover,
div.code-toolbar > .toolbar > .toolbar-item > a:focus,
div.code-toolbar > .toolbar > .toolbar-item > button:hover,
div.code-toolbar > .toolbar > .toolbar-item > button:focus,
div.code-toolbar > .toolbar > .toolbar-item > span:hover,
div.code-toolbar > .toolbar > .toolbar-item > span:focus {
color: inherit;
text-decoration: none;
}

View File

@ -1,336 +0,0 @@
/* PrismJS 1.24.1
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */
/**
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
* Based on https://github.com/chriskempson/tomorrow-theme
* @author Rose Pritchard
*/
code[class*="language-"],
pre[class*="language-"] {
color: #ccc;
background: none;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #2d2d2d;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.block-comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #999;
}
.token.punctuation {
color: #ccc;
}
.token.tag,
.token.attr-name,
.token.namespace,
.token.deleted {
color: #e2777a;
}
.token.function-name {
color: #6196cc;
}
.token.boolean,
.token.number,
.token.function {
color: #f08d49;
}
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: #f8c555;
}
.token.selector,
.token.important,
.token.atrule,
.token.keyword,
.token.builtin {
color: #cc99cd;
}
.token.string,
.token.char,
.token.attr-value,
.token.regex,
.token.variable {
color: #7ec699;
}
.token.operator,
.token.entity,
.token.url {
color: #67cdcc;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.token.inserted {
color: green;
}
pre[data-line] {
position: relative;
padding: 1em 0 1em 3em;
}
.line-highlight {
position: absolute;
left: 0;
right: 0;
padding: inherit 0;
margin-top: 1em; /* Same as .prisms padding-top */
background: hsla(24, 20%, 50%,.08);
background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
pointer-events: none;
line-height: inherit;
white-space: pre;
}
@media print {
.line-highlight {
/*
* This will prevent browsers from replacing the background color with white.
* It's necessary because the element is layered on top of the displayed code.
*/
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
}
.line-highlight:before,
.line-highlight[data-end]:after {
content: attr(data-start);
position: absolute;
top: .4em;
left: .6em;
min-width: 1em;
padding: 0 .5em;
background-color: hsla(24, 20%, 50%,.4);
color: hsl(24, 20%, 95%);
font: bold 65%/1.5 sans-serif;
text-align: center;
vertical-align: .3em;
border-radius: 999px;
text-shadow: none;
box-shadow: 0 1px white;
}
.line-highlight[data-end]:after {
content: attr(data-end);
top: auto;
bottom: .4em;
}
.line-numbers .line-highlight:before,
.line-numbers .line-highlight:after {
content: none;
}
pre[id].linkable-line-numbers span.line-numbers-rows {
pointer-events: all;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
cursor: pointer;
}
pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
background-color: rgba(128, 128, 128, .2);
}
pre[class*="language-"].line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber;
}
pre[class*="language-"].line-numbers > code {
position: relative;
white-space: inherit;
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em; /* works for line-numbers below 1000 lines */
letter-spacing: -1px;
border-right: 1px solid #999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line-numbers-rows > span {
display: block;
counter-increment: linenumber;
}
.line-numbers-rows > span:before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: 0.8em;
text-align: right;
}
.command-line-prompt {
border-right: 1px solid #999;
display: block;
float: left;
font-size: 100%;
letter-spacing: -1px;
margin-right: 1em;
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.command-line-prompt > span:before {
color: #999;
content: ' ';
display: block;
padding-right: 0.8em;
}
.command-line-prompt > span[data-user]:before {
content: "[" attr(data-user) "@" attr(data-host) "] $";
}
.command-line-prompt > span[data-user="root"]:before {
content: "[" attr(data-user) "@" attr(data-host) "] #";
}
.command-line-prompt > span[data-prompt]:before {
content: attr(data-prompt);
}
div.code-toolbar {
position: relative;
}
div.code-toolbar > .toolbar {
position: absolute;
top: .3em;
right: .2em;
transition: opacity 0.3s ease-in-out;
opacity: 0;
}
div.code-toolbar:hover > .toolbar {
opacity: 1;
}
/* Separate line b/c rules are thrown out if selector is invalid.
IE11 and old Edge versions don't support :focus-within. */
div.code-toolbar:focus-within > .toolbar {
opacity: 1;
}
div.code-toolbar > .toolbar > .toolbar-item {
display: inline-block;
}
div.code-toolbar > .toolbar > .toolbar-item > a {
cursor: pointer;
}
div.code-toolbar > .toolbar > .toolbar-item > button {
background: none;
border: 0;
color: inherit;
font: inherit;
line-height: normal;
overflow: visible;
padding: 0;
-webkit-user-select: none; /* for button */
-moz-user-select: none;
-ms-user-select: none;
}
div.code-toolbar > .toolbar > .toolbar-item > a,
div.code-toolbar > .toolbar > .toolbar-item > button,
div.code-toolbar > .toolbar > .toolbar-item > span {
color: #bbb;
font-size: .8em;
padding: 0 .5em;
background: #f5f2f0;
background: rgba(224, 224, 224, 0.2);
box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
border-radius: .5em;
}
div.code-toolbar > .toolbar > .toolbar-item > a:hover,
div.code-toolbar > .toolbar > .toolbar-item > a:focus,
div.code-toolbar > .toolbar > .toolbar-item > button:hover,
div.code-toolbar > .toolbar > .toolbar-item > button:focus,
div.code-toolbar > .toolbar > .toolbar-item > span:hover,
div.code-toolbar > .toolbar > .toolbar-item > span:focus {
color: inherit;
text-decoration: none;
}

View File

@ -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";

115
assets/css/syntax.css Normal file
View File

@ -0,0 +1,115 @@
code.language-css,
code.language-scss,
.token.boolean,
.token.string,
.token.entity,
.token.url,
.language-css .token.string,
.language-scss .token.string,
.style .token.string,
.token.attr-value,
.token.keyword,
.token.control,
.token.directive,
.token.statement,
.token.regex,
.token.atrule,
.token.number,
.token.inserted,
.token.important {
color: var(--accent) !important;
}
.token.tag-id,
.token.atrule-id,
.token.operator,
.token.unit,
.token.placeholder,
.token.variable,
.token.attr-name,
.token.namespace,
.token.deleted,
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: color-mix(in srgb, var(--accent) 70%, transparent) !important;
}
.token.property,
.token.function,
.token.function-name,
.token.deleted,
code.language-javascript,
code.language-html,
.command-line-prompt > span::before {
color: var(--accent) !important;
}
.token.selector,
.token.tag,
.token.punctuation {
color: color-mix(in srgb, var(--accent) 50%, var(--foreground)) !important;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: color-mix(in srgb, var(--foreground) 30%, transparent) !important;
}
.token.namespace {
opacity: 0.7 !important;
}
pre[data-line] {
position: relative;
}
pre[class*=language-] {
margin: 0;
overflow: auto;
}
.line-highlight {
position: absolute;
left: 0;
right: 0;
padding: 0;
margin: 0;
background: color-mix(in srgb, var(--foreground) 7%, transparent);
pointer-events: none;
line-height: inherit;
white-space: pre;
}
.line-highlight::before,
.line-highlight[data-end]::after {
content: attr(data-start);
position: absolute;
/* top: .4em; */
left: 0.6em;
min-width: 1em;
padding: 0 0.5em;
background-color: color-mix(in srgb, var(--foreground) 40%, transparent);
color: var(--foreground);
font: bold 65%/1.5 sans-serif;
text-align: center;
vertical-align: 0.3em;
border-radius: 999px;
text-shadow: none;
box-shadow: 0 1px var(--foreground);
}
.line-highlight[data-end]::after {
content: attr(data-end);
top: auto;
bottom: 0.4em;
}
.line-numbers .line-highlight::before,
.line-numbers .line-highlight::after {
content: none;
}

View File

@ -1,153 +0,0 @@
code.language-css,
code.language-scss,
.token.boolean,
.token.string,
.token.entity,
.token.url,
.language-css .token.string,
.language-scss .token.string,
.style .token.string,
.token.attr-value,
.token.keyword,
.token.control,
.token.directive,
.token.statement,
.token.regex,
.token.atrule,
.token.number,
.token.inserted,
.token.important {
color: $accent !important;
}
.token.tag-id,
.token.atrule-id,
.token.operator,
.token.unit,
.token.placeholder,
.token.variable,
.token.tag,
.token.attr-name,
.token.namespace,
.token.deleted,
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: transparentize($accent, .3) !important;
}
.token.property,
.token.function,
.token.function-name,
.token.deleted,
code.language-javascript,
code.language-html,
.command-line-prompt > span:before {
color: mix($accent, #999, .9) !important;
}
.token.selector,
.token.tag,
.token.punctuation {
color: white;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: rgba(255, 255, 255, .3) !important;
}
.token.namespace {
opacity: .7 !important;
}
pre[data-line] {
position: relative;
}
pre[class*="language-"] {
margin: 0;
padding: 0;
overflow: auto;
}
.line-highlight {
position: absolute;
left: 0;
right: 0;
padding: 0;
margin: 0;
background: transparentize(mix($accent, #999, 90%), .92);
pointer-events: none;
line-height: inherit;
white-space: pre;
}
.line-highlight:before,
.line-highlight[data-end]:after {
content: attr(data-start);
position: absolute;
/* top: .4em; */
left: .6em;
min-width: 1em;
padding: 0 .5em;
background-color: hsla(24, 20%, 50%, .4);
color: hsl(24, 20%, 95%);
font: bold 65%/1.5 sans-serif;
text-align: center;
vertical-align: .3em;
border-radius: 999px;
text-shadow: none;
box-shadow: 0 1px white;
}
.line-highlight[data-end]:after {
content: attr(data-end);
top: auto;
bottom: .4em;
}
.line-numbers .line-highlight:before,
.line-numbers .line-highlight:after {
content: none;
}
.code-toolbar {
$code-margin: 40px;
position: relative;
margin: $code-margin 0;
padding: 20px;
border: 1px solid rgba(255, 255, 255, .1);
+ .code-toolbar,
+ .highlight,
+ .highlight .code-toolbar {
border-top: 0;
margin-top: calc(-1 * $code-margin);
}
pre, code {
border: none;
}
code {
display: block;
color: inherit;
}
> .toolbar {
button {
font-size: .8em !important;
background: hsla(0,0%,87.8%,.2) !important;
color: #bbb !important;
box-shadow: 0 2px 0 0 rgba(0,0,0,.2) !important;
border-radius: 0 !important;
margin: 6px !important;
padding: 10px !important;
user-select:none
}
}
}

373
assets/css/terminal.css Normal file
View File

@ -0,0 +1,373 @@
:root {
--background: #1a170f;
--foreground: #eceae5;
--accent: #eec35e;
--font-size: 1rem;
--line-height: 1.54rem;
--radius: 0;
}
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
font-family:
"Fira Code",
Monaco,
Consolas,
"Ubuntu Mono",
monospace;
font-size: 1rem;
font-weight: 400;
line-height: var(--line-height);
letter-spacing: -0.02em;
background-color: var(--background);
color: var(--foreground);
text-rendering: optimizelegibility;
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
text-size-adjust: 100%;
}
::placeholder {
color: color-mix(in srgb var(--foreground) 50%, black);
}
h1,
h2 {
font-size: calc(var(--font-size) * 1.1);
text-transform: uppercase;
letter-spacing: 0.04em;
}
h1 {
text-decoration: underline;
text-decoration-thickness: 2px;
text-underline-offset: calc(var(--font-size) * 0.2);
}
h3,
h4,
h5,
h6 {
font-size: calc(var(--font-size) * 1.1);
letter-spacing: 0.04em;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
img,
figure,
video,
table {
margin: calc(var(--line-height) * 1.2) 0;
}
a {
color: var(--accent);
}
button {
position: relative;
font: inherit;
font-weight: bold;
text-decoration: none;
text-align: center;
background: transparent;
color: var(--accent);
padding: 5px 18px;
border: 4px solid var(--accent);
border-radius: var(--radius);
transition: background 0.15s linear;
appearance: none;
cursor: pointer;
outline: none;
}
button:hover {
background: color-mix(in srgb, var(--accent) 15%, transparent);
}
button:focus-visible,
a:focus-visible {
outline: 1px solid var(--accent);
outline-offset: 2px;
}
fieldset {
display: inline-block;
border: 2px solid var(--foreground);
border-radius: calc(var(--radius) * 1.6);
padding: 10px;
}
fieldset *:first-child {
margin-top: 0;
}
fieldset input,
fieldset select,
fieldset textarea,
fieldset label,
fieldset button {
margin-top: calc(var(--line-height) * 0.5);
width: 100%;
}
label {
display: inline-block;
}
label input {
margin-top: 0;
}
input,
textarea,
select {
background: transparent;
color: var(--foreground);
border: 1px solid var(--foreground);
border-radius: var(--radius);
padding: 10px;
font: inherit;
appearance: none;
}
input[type="checkbox"] {
width: auto;
}
input:focus-visible,
input:active,
textarea:focus-visible,
textarea:active,
select:focus-visible,
select:active {
border-color: var(--accent);
outline: 1px solid var(--accent);
outline-offset: 2px;
}
input:active,
textarea:active,
select:active {
box-shadow: none;
}
select {
background-image: linear-gradient(
45deg,
transparent 50%,
var(--foreground) 50%
),
linear-gradient(135deg, var(--foreground) 50%, transparent 50%);
background-position: calc(100% - 20px), calc(100% - 1em);
background-size:
5px 5px,
5px 5px;
background-repeat: no-repeat;
padding-right: 40px;
}
select option {
background: var(--background);
}
input[type="checkbox"] {
vertical-align: middle;
padding: 10px;
box-shadow: inset 0 0 0 3px var(--background);
}
input[type="checkbox"]:checked {
background: var(--accent);
}
img {
display: block;
max-width: 100%;
border: 8px solid var(--accent);
border-radius: var(--radius);
padding: 8px;
overflow: hidden;
}
figure img,
figure video {
margin-bottom: 0;
}
figure figcaption {
background: var(--accent);
color: var(--background);
text-align: center;
font-size: 1rem;
font-weight: normal;
margin-top: -8px;
border-radius: 0 0 var(--radius) var(--radius);
}
ul,
ol {
margin-left: 4ch;
padding: 0;
}
ul ul,
ul ol,
ol ul,
ol ol {
margin-top: 0;
}
li::marker {
color: var(--accent);
}
ul li,
ol li {
position: relative;
}
code,
kbd {
font-family:
"Fira Code",
Monaco,
Consolas,
"Ubuntu Mono",
monospace !important;
font-feature-settings: normal;
background: color-mix(in srgb, var(--foreground) 5%, transparent);
color: var(--accent);
padding: 1px 6px;
margin: 0 2px;
font-size: 0.95rem;
}
kbd {
border-top: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
border-left: 1px solid var(--accent);
border-right: 1px solid var(--accent);
border-bottom: 4px solid var(--accent);
border-radius: 4px;
}
code code {
background: transparent;
padding: 0;
margin: 0;
}
pre {
tab-size: 4;
background: color-mix(in srgb, var(--foreground) 5%, transparent) !important;
color: var(--foreground);
padding: 20px 10px;
font-size: 0.95rem !important;
overflow: auto;
border-radius: var(--radius);
border: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
}
pre code {
background: none !important;
margin: 0;
padding: 0;
font-size: inherit;
border: none;
}
sup {
line-height: 0;
}
abbr {
position: relative;
text-decoration-style: wavy;
text-decoration-color: var(--accent);
cursor: help;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.25em;
}
mark {
background: color-mix(in srgb, var(--accent) 45%, transparent);
color: var(--foreground);
}
blockquote {
position: relative;
border-top: 1px solid var(--accent);
border-bottom: 1px solid var(--accent);
margin: 0;
padding: 25px;
}
blockquote::before {
content: ">";
display: block;
position: absolute;
left: 0;
color: var(--accent);
}
blockquote p:first-child {
margin-top: 0;
}
blockquote p:last-child {
margin-bottom: 0;
}
table {
table-layout: auto;
border-collapse: collapse;
}
table,
th,
td {
border: 2px solid var(--foreground);
padding: 10px;
}
th {
border-style: solid;
color: var(--foreground);
text-align: left;
text-transform: uppercase;
letter-spacing: 0.04em;
}
hr {
width: 100%;
border: none;
background: var(--accent);
height: 2px;
}

18
assets/css/terms.css Normal file
View File

@ -0,0 +1,18 @@
.terms h3 {
font-size: initial;
}
.terms ul {
list-style: none;
}
.terms ul li a {
color: var(--accent);
}
.terms ul li:not(:empty)::before {
content: "-";
position: absolute;
left: -20px;
color: var(--accent);
}

View File

@ -1,9 +0,0 @@
.terms {
h1 {
color: $accent;
}
h3 {
font-size: initial;
}
}

View File

@ -1,14 +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";
/* variables for js, must be the same as these in @custom-media queries */
:root {
--phoneWidth: (max-width: 684px);
--tabletWidth: (max-width: 900px);
}

View File

@ -0,0 +1,4 @@
[module]
[module.hugoVersion]
extended = true
min = '0.90.0'

View File

@ -3,9 +3,11 @@ languageCode = "en-us"
theme = "hugo-theme-terminal" theme = "hugo-theme-terminal"
paginate = 5 paginate = 5
[markup.goldmark.renderer]
unsafe = true
[params] [params]
contentTypeName = "posts" contentTypeName = "posts"
themeColor = "orange"
showMenuItems = 2 showMenuItems = 2
fullWidthTheme = false fullWidthTheme = false
centerTheme = false centerTheme = false

View File

@ -14,9 +14,8 @@ This theme is pretty basic and covers all of the essentials. All you have to do
The theme includes: The theme includes:
- **5 duotone themes**, depending on your preferences (orange, red, blue, green, pink) - fully customizable color schemes generated by [**terminal.css**](https://panr.github.io/terminal-css/).
- [**Fira Code**](https://github.com/tonsky/FiraCode) as default monospaced font. It's gorgeous! - great reading experience thanks to [**Fira Code**](https://github.com/tonsky/FiraCode).
- **really nice, custom duotone** syntax highlighting based on [**PrismJS**](https://prismjs.com) - nice code highlighting thanks to [**PrismJS**](https://prismjs.com) that matches the theme's color scheme.
- mobile friendly layout
So, there you have it... enjoy! So, there you have it... enjoy!

View File

@ -1,22 +1,139 @@
--- +++
title: "Showcase" author = "Hugo Authors & Radek"
date: "2018-07-18" title = "Showcase"
author: "Hello Robot" date = "2019-03-11"
--- description = "Sample article showcasing basic styling and formatting for HTML elements."
+++
## Header 2 This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
<!--more-->
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec interdum metus. Aenean rutrum ligula sodales ex auctor, sed tempus dui mollis. Curabitur ipsum dui, aliquet nec commodo at, tristique eget ante. **Donec quis dolor nec nunc mollis interdum vel in purus**. Sed vitae leo scelerisque, sollicitudin elit sed, congue ante. In augue nisl, vestibulum commodo est a, tristique porttitor est. Proin laoreet iaculis ornare. Nullam ut neque quam. ## Headings
> Fusce pharetra suscipit orci nec tempor. Quisque vitae sem sit amet sem mollis consequat. Sed at imperdiet lorem. Vestibulum pharetra faucibus odio, ac feugiat tellus sollicitudin at. Pellentesque varius tristique mi imperdiet dapibus. Duis orci odio, sodales lacinia venenatis sit amet, feugiat et diam. The following HTML `<h1>``<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
### Header 3 # H1
## H2
### H3
### H4
#### H5
##### H6
Nulla libero turpis, lacinia vitae cursus ut, auctor dictum nisl. Fusce varius felis nec sem ullamcorper, at convallis nisi vestibulum. Duis risus odio, porta sit amet placerat mollis, tincidunt non mauris. Suspendisse fringilla, `odio a dignissim pharetra`, est urna sollicitudin urna, eu scelerisque magna ex vitae tellus. ## Paragraph
```css Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
/* PostCSS code */
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
## Images
![Terminal Theme Preview](/img/terminal-theme.png)
### Figure with a caption
{{< figure src="/img/terminal-theme.png" alt="Terminal Theme Preview" position="center" caption="Terminal Theme Preview" captionPosition="center" >}}
## Blockquotes
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
### Blockquote without attribution
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
> **Note** that you can use *Markdown syntax* within a blockquote.
### Blockquote with attribution
> Don't communicate by sharing memory, share memory by communicating.<br>
> — <cite>Rob Pike[^1]</cite>
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
## Buttons and links
<button>Button</button>
<a href="">Link</a>
<a href="" class="button inline">Link</a>
## Tables
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
Name | Age
--------|------
Bob | 27
Alice | 23
### Inline Markdown within tables
| Italics | Bold | Code |
| -------- | -------- | ------ |
| *italics* | **bold** | `code` |
## Forms
<fieldset>
<input type="text" placeholder="Type something" /><br />
<input type="number" placeholder="Insert number" /><br />
<input type="text" value="Input value" /><br />
<select>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select><br />
<textarea placeholder="Insert a comment..."></textarea><br />
<input type="checkbox" /> I understand<br />
<button type="submi">Submit</button>
</fieldset>
## Code Blocks
### Code block with backticks
```html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
```
### Code block indented with four spaces
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
### Code block with Hugo's internal highlight shortcode
{{< highlight html >}}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
{{< /highlight >}}
### Code block with custom built-in `{{ < code > }}` shortcode
{{< code title="Hey, this is a code block title" language="css" >}}
pre { pre {
background: #1a1a1d; background: #1a1a1d;
padding: 20px; padding: 20px;
@ -36,49 +153,40 @@ pre {
font-size: inherit; font-size: inherit;
} }
} }
``` {{< /code >}}
```js ## List Types
// JS code
const menuTrigger = document.querySelector('.menu-trigger') ### Ordered List
const menu = document.querySelector('.menu')
const mobileQuery = getComputedStyle(document.body).getPropertyValue('--phoneWidth')
const isMobile = () => window.matchMedia(mobileQuery).matches
const isMobileMenu = () => {
menuTrigger.classList.toggle('hidden', !isMobile())
menu.classList.toggle('hidden', isMobile())
}
isMobileMenu() 1. First item
2. Second item
3. Third item
menuTrigger.addEventListener('click', () => menu.classList.toggle('hidden')) ### Unordered List
window.addEventListener('resize', isMobileMenu) * List item
``` * Another item
* And another item
```html ### Nested list
<!-- HTML code -->
<section id="main"> * Fruit
<div> * Apple
<h1 id="title">{{ .Title }}</h1> * Orange
{{ range .Pages }} * Banana
{{ .Render "summary"}} * Dairy
{{ end }} * Milk
</div> * Cheese
</section>
```
#### Header 4 ## Other Elements — abbr, sub, sup, kbd, mark
Curabitur scelerisque felis viverra varius scelerisque. Ut enim libero, molestie gravida blandit at, mollis ornare tellus. Cras arcu mi, ultrices vel pulvinar vel, volutpat eu tortor. Nullam nec eros quis massa ultrices iaculis sed in metus. Praesent sollicitudin sem sit amet orci tempor gravida. <abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
- Maecenas elementum vitae nibh vitae porttitor. H<sub>2</sub>O
- Aenean consequat, risus ut cursus placerat, arcu nulla sodales risus, ut molestie tellus tellus et dui.
- Integer imperdiet turpis vitae lacus imperdiet, ut ornare ligula auctor. Integer in mi eu velit vehicula suscipit eget vulputate nulla.
- Etiam vitae enim quis velit lobortis placerat a ut sem.
- Curabitur lobortis ante sit amet orci pulvinar, sollicitudin viverra nunc accumsan.
- Praesent fermentum orci quis leo facilisis posuere.
Aliquam erat volutpat. In hac habitasse platea dictumst. Nunc ut tincidunt mauris. Sed at gravida risus, id semper magna. Nullam vitae enim mattis, sodales neque non, pharetra elit. Cras sit amet sagittis augue, et finibus turpis. Ut tempus tincidunt diam vel pharetra. Nulla porttitor odio sit amet nulla scelerisque, quis aliquam mi imperdiet. Sed tincidunt dui vel tellus vestibulum rhoncus. Donec tempus ultrices velit. X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
Press <kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd> to end the session.
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.

2
go.mod
View File

@ -1,3 +1,3 @@
module github.com/panr/hugo-theme-terminal/v3 module github.com/panr/hugo-theme-terminal/v4
go 1.19 go 1.19

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 KiB

After

Width:  |  Height:  |  Size: 84 KiB

BIN
images/terminal-css.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

BIN
images/terminal-theme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -6,10 +6,10 @@
{{ end }} {{ end }}
{{ partial "head.html" . }} {{ partial "head.html" . }}
</head> </head>
<body class="{{- ( or .Params.color $.Site.Params.ThemeColor ) -}}"> <body>
{{ $container := cond ($.Site.Params.FullWidthTheme | default false) "container full" (cond ($.Site.Params.CenterTheme | default false) "container center" "container") }} {{ $container := cond ($.Site.Params.FullWidthTheme | default false) "container full" (cond ($.Site.Params.CenterTheme | default false) "container center" "container") }}
<div class="{{- $container -}}{{- cond ($.Site.Params.oneHeadingSize | default true) " headings--one-size" "" }}"> <div class="{{- $container -}}{{- cond ($.Site.Params.oneHeadingSize | default false) " headings--one-size" "" }}">
{{ partial "header.html" . }} {{ partial "header.html" . }}

View File

@ -16,19 +16,19 @@
{{ range $paginator.Pages }} {{ range $paginator.Pages }}
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a> <a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</h1> </h2>
<div class="post-meta"> <div class="post-meta">
{{ if .Date }} {{- if .Date -}}
<time class="post-date"> <time class="post-date">
{{ .Date.Format "2006-01-02" }} :: {{- .Date.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 }}
@ -47,15 +47,15 @@
{{ if .Params.showFullContent }} {{ if .Params.showFullContent }}
{{ .Content }} {{ .Content }}
{{ else if .Description }} {{ else if .Description }}
{{ .Description | markdownify }} <p>{{ .Description | markdownify }}</p>
{{ else }} {{ else }}
{{ .Summary | markdownify }} {{ .Summary }}
{{ 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 inline" href="{{ .RelPermalink }}">{{ $.Site.Params.ReadMore }}</a>
</div> </div>
{{ end }} {{ end }}
</article> </article>

View File

@ -7,18 +7,18 @@
<div class="posts"> <div class="posts">
{{ range .Paginator.Pages }} {{ range .Paginator.Pages }}
<article class="post on-list"> <article class="post on-list">
<h1 class="post-title"> <h2 class="post-title">
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a> <a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</h1> </h2>
<div class="post-meta"> <div class="post-meta">
{{ if .Date }} {{- if .Date -}}
<time class="post-date"> <time class="post-date">
{{ .Date.Format "2006-01-02" }} :: {{- .Date.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 }}
@ -37,15 +37,15 @@
{{ if .Params.showFullContent }} {{ if .Params.showFullContent }}
{{ .Content }} {{ .Content }}
{{ else if .Description }} {{ else if .Description }}
{{ .Description | markdownify }} <p>{{ .Description | markdownify }}</p>
{{ else }} {{ else }}
{{ .Summary | markdownify }} {{ .Summary }}
{{ 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 inline" href="{{ .RelPermalink }}">{{ $.Site.Params.ReadMore }}</a>
</div> </div>
{{ end }} {{ end }}
</article> </article>

View File

@ -4,20 +4,20 @@
<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 .Date -}}
<time class="post-date"> <time class="post-date">
{{ .Date.Format "2006-01-02" }} :: {{- .Date.Format "2006-01-02" -}}
{{ if $.Site.Params.showLastUpdated }} {{- if $.Site.Params.showLastUpdated -}}
[{{or $.Site.Params.updatedDatePrefix "Updated"}} :: {{ .Lastmod.Format "2006-01-02" }}] [{{- or $.Site.Params.updatedDatePrefix "Updated" -}} :: {{- .Lastmod.Format "2006-01-02" -}}]
{{ end }} {{- end -}}
</time> </time>
{{ 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 }} min read ({{ .WordCount }} words)</span> <span class="post-reading-time">{{ .ReadingTime }} {{ $.Site.Params.minuteReadingTime | default "min read" }} ({{ .WordCount }} {{ $.Site.Params.words | default "words" }})</span>
{{ end }} {{- end -}}
</div> </div>
{{ if .Params.tags }} {{ if .Params.tags }}
@ -41,7 +41,7 @@
<div class="post-content"> <div class="post-content">
{{- with .Content -}} {{- with .Content -}}
<div> <div>
{{ . | replaceRE "(<h[1-9] id=\"([^\"]+)\".+)(</h[1-9]+>)" `${1}<a href="#${2}" class="hanchor" ariaLabel="Anchor">&#8983;</a> ${3}` | safeHTML }} {{ . | replaceRE "(<h[1-9] id=\"([^\"]+)\".+)(</h[1-9]+>)" `${1}<a href="#${2}" class="hanchor" ariaLabel="Anchor">#</a> ${3}` | safeHTML }}
</div> </div>
{{- end -}} {{- end -}}
</div> </div>

View File

@ -0,0 +1,57 @@
{{ 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>&nbsp;
{{ end }}
</span>
{{ end }}
{{ partial "cover.html" . }}
<div class="post-content">
{{ if .Params.showFullContent }}
{{ .Content }}
{{ else if .Description }}
<p>{{ .Description | markdownify }}</p>
{{ else }}
{{ .Summary }}
{{ end }}
</div>
{{ if not .Params.showFullContent }}
<div>
<a class="read-more button inline" href="{{ .RelPermalink }}">{{ $.Site.Params.ReadMore }}</a>
</div>
{{ end }}
</article>
{{ end }}
{{ partial "pagination.html" . }}
</div>
{{ end }}

View File

@ -1,6 +1,11 @@
{{ 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 }}
@ -8,7 +13,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 }}

View File

@ -5,7 +5,7 @@
<span>{{ $.Site.Copyright | safeHTML }}</span> <span>{{ $.Site.Copyright | safeHTML }}</span>
{{ else }} {{ else }}
<div class="copyright"> <div class="copyright">
<span>© {{ now.Year }} Powered by <a href="http://gohugo.io">Hugo</a></span> <span>© {{ now.Year }} Powered by <a href="https://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>:: <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>
</div> </div>

View File

@ -2,39 +2,34 @@
<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 }}
{{ if or (eq (.Param "noindex") true) (eq (.Param "noindex") "true") }}
<meta name="robots" content="noindex" />
{{ end }}
{{ else }}
<meta name="robots" content="noodp" /> <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" }} {{ $css := resources.Match "css/*.css" }}
<!-- Local Theme Variables --> {{ range $css }}
{{ if and (isset .Params "color") (not (eq .Params.color "")) }} {{ $styles := . | minify | fingerprint }}
{{ $localColorCss := resources.Get (printf "css/color/%s.scss" .Params.color) }}
{{ $localCss := slice $localColorCss $defaultStyles | resources.Concat (printf "css/%s-local.scss" .Params.color) }}
{{ $localColorStyles := $localCss | resources.ToCSS }}
<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 }}"> <link rel="stylesheet" href="{{ $styles.Permalink }}">
{{ end }} {{ end }}
<!-- Custom Terminal.css styles -->
{{ if (fileExists "static/terminal.css") -}}
<link rel="stylesheet" href="{{ "terminal.css" | absURL }}">
{{- end }}
<!-- Custom CSS to override theme properties (/static/style.css) --> <!-- Custom CSS to override theme properties (/static/style.css) -->
{{ if (fileExists "static/style.css") -}} {{ if (fileExists "static/style.css") -}}
<link rel="stylesheet" href="{{ "style.css" | absURL }}"> <link rel="stylesheet" href="{{ "style.css" | absURL }}">
{{- end }} {{- end }}
<!-- Icons --> <!-- Icons -->
{{ if isset $.Site.Params "favicon" }} <link rel="shortcut icon" href="{{ "favicon.png" | absURL }}">
<link rel="shortcut icon" href="{{ $.Site.Params.favicon | absURL }}"> <link rel="apple-touch-icon" href="{{ "apple-touch-icon.png" | absURL }}">
{{ else }}
<link rel="shortcut icon" href="{{ printf "img/theme-colors/%s.png" (or .Params.color $.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 }}
<!-- Twitter Card --> <!-- Twitter Card -->
<meta name="twitter:card" content="summary" /> <meta name="twitter:card" content="summary" />
@ -59,11 +54,7 @@
{{ end }} {{ end }}
<meta property="og:image" content="{{ $pageCover | absURL }}"> <meta property="og:image" content="{{ $pageCover | absURL }}">
{{ else }} {{ else }}
{{ if isset $.Site.Params "favicon" }} <meta property="og:image" content="{{ "og-image.png" | absURL }}">
<meta property="og:image" content="{{ $.Site.Params.favicon | absURL }}">
{{ else }}
<meta property="og:image" content="{{ printf "img/favicon/%s.png" $.Site.Params.ThemeColor | absURL }}">
{{ end }}
{{ end }} {{ end }}
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="627"> <meta property="og:image:height" content="627">

View File

@ -3,18 +3,18 @@
{{ if or $.Site.Params.showMenuItems ( eq .Site.Params.showMenuItems 0 ) }} {{ if or $.Site.Params.showMenuItems ( eq .Site.Params.showMenuItems 0 ) }}
{{ range first $.Site.Params.showMenuItems $.Site.Menus.main }} {{ range first $.Site.Params.showMenuItems $.Site.Menus.main }}
{{ if not .HasChildren }} {{ if not .HasChildren }}
<li><a href="{{ .URL }}">{{ .Name }}</a></li> <li><a href="{{ .URL }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .Name }}</a></li>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if gt (len $.Site.Menus.main) $.Site.Params.showMenuItems }} {{ if gt (len $.Site.Menus.main) $.Site.Params.showMenuItems }}
<li> <li>
<ul class="menu"> <ul class="menu">
<li class="menu__trigger">{{ $.Site.Params.MenuMore }}&nbsp;</li> <li class="menu__trigger">{{ $.Site.Params.menuMore }}&nbsp;</li>
<li> <li>
<ul class="menu__dropdown"> <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 }}">{{ .Name }}</a></li> <li><a href="{{ .URL }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .Name }}</a></li>
{{ end }} {{ end }}
{{ end }} {{ end }}
</ul> </ul>
@ -25,7 +25,7 @@
{{ else }} {{ else }}
{{ range $.Site.Menus.main }} {{ range $.Site.Menus.main }}
{{ if not .HasChildren }} {{ if not .HasChildren }}
<li><a href="{{ .URL }}">{{ .Name }}</a></li> <li><a href="{{ .URL }}" {{ if .Params.NewTab -}} target="_blank" {{- end }}>{{ .Name }}</a></li>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@ -1,7 +1,7 @@
<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"> <a href="{{ .Paginator.Prev.URL }}" class="button prev">
<span class="button__icon"></span> <span class="button__icon"></span>
<span class="button__text">{{ $.Site.Params.newerPosts | default "Newer posts" }}</span> <span class="button__text">{{ $.Site.Params.newerPosts | default "Newer posts" }}</span>
</a> </a>

View File

@ -6,20 +6,17 @@
</div> </div>
<div class="pagination__buttons"> <div class="pagination__buttons">
{{ if .NextInSection }} {{ if .NextInSection }}
<span class="button previous"> <a href="{{ .NextInSection.Permalink }}" class="button inline prev">
<a href="{{ .NextInSection.Permalink }}"> {{ .NextInSection.Title }}
<span class="button__icon"></span>
<span class="button__text">{{ .NextInSection.Title }}</span>
</a> </a>
</span> {{ end }}
{{ if and .NextInSection .PrevInSection }}
::
{{ end }} {{ end }}
{{ if .PrevInSection }} {{ if .PrevInSection }}
<span class="button next"> <a href="{{ .PrevInSection.Permalink }}" class="button inline next">
<a href="{{ .PrevInSection.Permalink }}"> {{ .PrevInSection.Title }}
<span class="button__text">{{ .PrevInSection.Title }}</span>
<span class="button__icon"></span>
</a> </a>
</span>
{{ end }} {{ end }}
</div> </div>
</div> </div>

View File

@ -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 }} /> <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 }} />
{{ end }} {{ end }}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"Target":"style.css","MediaType":"text/css","Data":{}}

View File

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 190 B

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

BIN
static/og-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,8 +1,9 @@
name = "terminal" name = "Terminal"
license = "MIT" license = "MIT"
licenselink = "https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md" licenselink = "https://github.com/panr/hugo-theme-terminal/blob/master/LICENSE.md"
description = "A simple, retro theme for Hugo." description = "A simple, retro theme for Hugo."
homepage = "https://github.com/panr/hugo-theme-terminal/" homepage = "https://github.com/panr/hugo-theme-terminal/"
demosite = "https://panr.github.io/hugo-theme-terminal-demo/"
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.90