init
This commit is contained in:
commit
d6006a0227
82 changed files with 2862 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
public
|
192
LICENSE-Apache
Normal file
192
LICENSE-Apache
Normal file
|
@ -0,0 +1,192 @@
|
|||
Copyright 2025, Elijah McMorris ( NexVeridian )
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Copyright 2023, Elijah McMorris ( NexVeridian )
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
21
LICENSE-MIT
Normal file
21
LICENSE-MIT
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Elijah McMorris (NexVeridian)
|
||||
|
||||
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 the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
76
config.toml
Normal file
76
config.toml
Normal file
|
@ -0,0 +1,76 @@
|
|||
# The URL the site will be built for
|
||||
base_url = "https://nexveridian.com"
|
||||
|
||||
# The site title and description; used in feeds by default.
|
||||
title = ""
|
||||
description = ""
|
||||
|
||||
# The default language; used in feeds.
|
||||
default_language = "en"
|
||||
|
||||
# The site theme to use.
|
||||
theme = "terminimal"
|
||||
|
||||
# Whether to automatically compile all Sass files in the sass directory
|
||||
compile_sass = true
|
||||
|
||||
minify_html = true
|
||||
|
||||
# Whether to build a search index to be used later on by a JavaScript library
|
||||
build_search_index = false
|
||||
|
||||
taxonomies = [{ name = "tags" }]
|
||||
|
||||
[markdown]
|
||||
# Whether to do syntax highlighting
|
||||
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
||||
highlight_code = true
|
||||
|
||||
[extra]
|
||||
# Put all your custom variables here
|
||||
author = "NexVeridian"
|
||||
|
||||
# The logo text - defaults to 2 non-breaking spaces.
|
||||
logo_text = "NexVeridian"
|
||||
|
||||
menu_items = [
|
||||
# set newtab to true to make the link open in new tab
|
||||
|
||||
# each of these is optional, name and url are required
|
||||
# $BASE_URL is going to be substituted by base_url from configuration
|
||||
{ name = "blog", url = "$BASE_URL" },
|
||||
|
||||
# tags should only be enabled if you have "tags" taxonomy
|
||||
# see documentation below for more details
|
||||
{ name = "tags", url = "$BASE_URL/tags" },
|
||||
{ name = "archive", url = "$BASE_URL/archive" },
|
||||
{ name = "about me", url = "$BASE_URL/about" },
|
||||
|
||||
{ name = "resume", url = "$BASE_URL/Elijah_McMorris_Resume.pdf" },
|
||||
]
|
||||
|
||||
show_only_description = true
|
||||
|
||||
# One of: blue, green, orange, pink, red.
|
||||
# Defaults to blue.
|
||||
# Append -light for light themes, e.g. blue-light
|
||||
# Or append -auto, e.g. blue-auto
|
||||
accent_color = "green"
|
||||
|
||||
# One of: blue, dark, green, orange, pink, red, light, auto
|
||||
# Enabling dark background will also modify primary font color to be darker.
|
||||
# Defaults to accent color (or, if not accent color specified, to blue).
|
||||
background_color = "dark"
|
||||
|
||||
# Whether to show links to earlier and later posts
|
||||
# on each post page.
|
||||
enable_post_view_navigation = true
|
||||
|
||||
# The text shown at the bottom of a post,
|
||||
# before earlier/later post links.
|
||||
post_view_navigation_prompt = "Thanks for reading! Read other posts?"
|
||||
|
||||
# Use full Hack character set, not just a subset.
|
||||
# Switch this to true if you need full unicode support.
|
||||
# Defaults to false.
|
||||
use_full_hack_font = false
|
4
content/_index.md
Normal file
4
content/_index.md
Normal file
|
@ -0,0 +1,4 @@
|
|||
+++
|
||||
paginate_by = 3
|
||||
sort_by = "date"
|
||||
+++
|
3
content/pages/_index.md
Normal file
3
content/pages/_index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
+++
|
||||
render = false
|
||||
+++
|
13
content/pages/about.md
Normal file
13
content/pages/about.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
+++
|
||||
title = "About Me"
|
||||
path = "about"
|
||||
+++
|
||||
|
||||
I recently finished BAS in Software Development, Im looking for a Software Engineering positions, I live in Kirkland WA, I'm a US citizen. I've contributed multiple substantial code PRs to JupyterLab and Loco.rs, created an official extension for Loco.rs adding OpenAPI integration, and I have several open source projects on my resume. My strongest programming languages: Rust, TypeScript, Python, and I also use Nix for a lot of my projects.
|
||||
|
||||
# Contact Me:
|
||||
- [Email](mailto:nexveridian@gmail.com)
|
||||
- [NexVeridian.com](https://nexveridian.com)
|
||||
- [GitHub.com](https://github.com/NexVeridian)
|
||||
- [LinkedIn](https://www.linkedin.com/in/nexveridian)
|
||||
- [Calendly](https://calendly.com/nexveridian/main)
|
5
content/pages/archive.md
Normal file
5
content/pages/archive.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
title = "Archive"
|
||||
path = "archive"
|
||||
template = "archive.html"
|
||||
+++
|
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1746397377,
|
||||
"narHash": "sha256-5oLdRa3vWSRbuqPIFFmQBGGUqaYZBxX+GGtN9f/n4lU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ed30f8aba41605e3ab46421e3dcb4510ec560ff8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
71
flake.nix
Normal file
71
flake.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
description = "Flake for building container for Zola static site";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
# Build the static website with Zola
|
||||
my-zola = pkgs.stdenv.mkDerivation {
|
||||
pname = "zola-static-website";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
nativeBuildInputs = [ pkgs.zola ];
|
||||
buildPhase = "zola build";
|
||||
installPhase = "cp -r public $out";
|
||||
};
|
||||
|
||||
# Create a Docker image with static-web-server to serve the site
|
||||
my-docker = pkgs.dockerTools.buildImage {
|
||||
name = "my-zola";
|
||||
tag = "latest";
|
||||
created = "now";
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "image-root";
|
||||
paths = [
|
||||
pkgs.static-web-server
|
||||
(pkgs.runCommand "docker-public" { } ''
|
||||
mkdir -p $out/public
|
||||
cp -r ${my-zola}/* $out/public
|
||||
'')
|
||||
];
|
||||
};
|
||||
|
||||
config = {
|
||||
Cmd = [
|
||||
"${pkgs.static-web-server}/bin/static-web-server"
|
||||
"--port"
|
||||
"80"
|
||||
];
|
||||
Expose = [ 80 ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
packages = {
|
||||
default = my-docker;
|
||||
inherit my-zola my-docker;
|
||||
};
|
||||
|
||||
# Development shell with Zola for local work
|
||||
devShell = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
zola
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
13
justfile
Normal file
13
justfile
Normal file
|
@ -0,0 +1,13 @@
|
|||
run:
|
||||
zola serve
|
||||
|
||||
update:
|
||||
nix flake update
|
||||
|
||||
docker:
|
||||
nix build .#packages.x86_64-linux.my-docker
|
||||
docker load < ./result
|
||||
docker rm -f my-zola
|
||||
docker run -d --rm -p 80:80 --name my-zola my-zola:latest
|
||||
rm -rf result
|
||||
docker image prune -f
|
BIN
static/Elijah_McMorris_Resume.pdf
Executable file
BIN
static/Elijah_McMorris_Resume.pdf
Executable file
Binary file not shown.
45
themes/terminimal/LICENSE-Hack.md
Normal file
45
themes/terminimal/LICENSE-Hack.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
The work in the Hack project is Copyright 2018 Source Foundry Authors and licensed under the MIT License
|
||||
|
||||
The work in the DejaVu project was committed to the public domain.
|
||||
|
||||
Bitstream Vera Sans Mono Copyright 2003 Bitstream Inc. and licensed under the Bitstream Vera License with Reserved Font Names "Bitstream" and "Vera"
|
||||
|
||||
### MIT License
|
||||
|
||||
Copyright (c) 2018 Source Foundry Authors
|
||||
|
||||
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 the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
### BITSTREAM VERA LICENSE
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
|
48
themes/terminimal/LICENSE.md
Normal file
48
themes/terminimal/LICENSE.md
Normal file
|
@ -0,0 +1,48 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Paweł Romanowski
|
||||
|
||||
Copyright (c) 2019 panr
|
||||
|
||||
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 the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
For hugo-theme-terminal:
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019 panr
|
||||
|
||||
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
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
430
themes/terminimal/README.md
Normal file
430
themes/terminimal/README.md
Normal file
|
@ -0,0 +1,430 @@
|
|||
# Terminimal
|
||||
|
||||
[](https://github.com/pawroman/zola-theme-terminimal/actions/workflows/pages/pages-build-deployment)
|
||||

|
||||
|
||||

|
||||
|
||||
See the live demo (of the default configuration) here:
|
||||
https://pawroman.github.io/zola-theme-terminimal/
|
||||
|
||||
Tested with Zola v0.19.2.
|
||||
|
||||
Please note that earlier (and older) versions might not work because of breaking changes across Zola versions.
|
||||
|
||||
#### Fork disclaimer
|
||||
|
||||
This theme is a fork (not a port) of "Terminal" Hugo theme
|
||||
by Radosław Kozieł (aka. panr):
|
||||
https://github.com/panr/hugo-theme-terminal
|
||||
|
||||
Many thanks for that outstanding original theme, Radek!
|
||||
|
||||
For more information about this fork and the differences to the original theme, please see:
|
||||
[Changes compared to the original theme](#changes-compared-to-the-original-theme) below.
|
||||
|
||||
## Versioning
|
||||
|
||||
This theme used to be non-versioned, e.g. you'd pull the master branch, and occasionally new features or fixes would
|
||||
be released.
|
||||
|
||||
Starting from version v1.0.0, the project adopted [Semantic Versioning](https://semver.org/).
|
||||
|
||||
Please check the [GitHub releases](https://github.com/pawroman/zola-theme-terminimal/releases) to see a change log
|
||||
and work out if there's any breaking changes.
|
||||
|
||||
## How to start
|
||||
|
||||
Option A: clone the theme directly into your Zola site folder:
|
||||
|
||||
```
|
||||
$ git clone https://github.com/pawroman/zola-theme-terminimal.git themes/terminimal
|
||||
```
|
||||
|
||||
Option B: include it as a git submodule (it's better if you plan to use CI builders):
|
||||
|
||||
```
|
||||
$ git submodule add https://github.com/pawroman/zola-theme-terminimal.git themes/terminimal
|
||||
```
|
||||
|
||||
Then in your `config.toml` set:
|
||||
|
||||
```toml
|
||||
theme = "terminimal"
|
||||
|
||||
# Sass compilation is required
|
||||
compile_sass = true
|
||||
```
|
||||
|
||||
Also see the Zola documentation on using themes:
|
||||
https://www.getzola.org/documentation/themes/installing-and-using-themes/
|
||||
|
||||
## Shortcodes
|
||||
|
||||
The theme adds two custom shortcodes related to image handling.
|
||||
|
||||
### `image`
|
||||
|
||||
Used to show images.
|
||||
|
||||
Required arguments:
|
||||
|
||||
- **`src`**
|
||||
|
||||
Optional arguments:
|
||||
|
||||
- **`alt`**
|
||||
- **`position`** (center \[default\] | left | right)
|
||||
- **`style`**
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{{ image(src="/img/hello.png", alt="Hello Friend",
|
||||
position="left", style="border-radius: 8px;") }}
|
||||
```
|
||||
|
||||
### `figure`
|
||||
|
||||
Same as `image`, but with a few extra optional arguments:
|
||||
|
||||
- **`caption`** (supports markdown)
|
||||
- **`caption_position`** (center \[default\] | left | right)
|
||||
- **`caption_style`**
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{{ figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
|
||||
style="width: 25%;",
|
||||
position="right",
|
||||
caption_position="left",
|
||||
caption="**Ferris**, the (unofficial) Rust mascot",
|
||||
caption_style="font-style: italic;") }}
|
||||
```
|
||||
|
||||
## OpenGraph
|
||||
|
||||
To add an image to a post, set the `og_image` extra option to the desired image
|
||||
in the same directory of the markdown file:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
og_image = "colocated_image.png"
|
||||
```
|
||||
|
||||
Additionally, for the section pages and for posts to have a fallback image, add
|
||||
`default_og_image` to the `[extra]` section:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
default_og_image = "static/ocean.jpg"
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Only show the post's description
|
||||
|
||||
On each post you can specify the following:
|
||||
|
||||
```toml
|
||||
description = "test description"
|
||||
|
||||
[extra]
|
||||
show_only_description = true
|
||||
```
|
||||
|
||||
This will render `test description` under this
|
||||
particular post on the homepage instead of a summary.
|
||||
|
||||
### Colors
|
||||
|
||||
Both the accent colors and background colors are
|
||||
configurable.
|
||||
|
||||
By default, both accent and background are set
|
||||
to `blue`.
|
||||
|
||||
To configure menu, add this in `[extra]` section
|
||||
of your `config.toml`:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# One of: blue, green, orange, pink, red.
|
||||
# Defaults to blue.
|
||||
# Append -light for light themes, e.g. blue-light
|
||||
# Or append -auto, e.g. blue-auto
|
||||
accent_color = "green"
|
||||
|
||||
# One of: blue, dark, green, orange, pink, red, light, auto
|
||||
# Enabling dark background will also modify primary font color to be darker.
|
||||
# Defaults to accent color (or, if not accent color specified, to blue).
|
||||
background_color = "dark"
|
||||
```
|
||||
|
||||
### Logo text and link
|
||||
|
||||
You can set the "logo" text and what it links to,
|
||||
by modifying `config.toml` like so:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# The logo text - defaults to "Terminimal theme"
|
||||
logo_text = "My blog"
|
||||
|
||||
# The logo link - defaults to base_url.
|
||||
logo_home_link = "/take/me/away!"
|
||||
```
|
||||
|
||||
### Author and copyright
|
||||
|
||||
You can set the footer's copyright author name like this:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# Author name: when specified, modifies the default
|
||||
# copyright text. Apart from author, it will
|
||||
# contain current year and a link to the theme.
|
||||
author = "My Name"
|
||||
```
|
||||
|
||||
If you don't like the default copyright text,
|
||||
you can set it to completely custom HTML:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# Copyright text in HTML format. If specified,
|
||||
# entirely replaces default copyright and author.
|
||||
copyright_html = "My custom <b>copyright</b>"
|
||||
```
|
||||
|
||||
### Menu
|
||||
|
||||
The menu is optional, static (all items are always shown,
|
||||
no matter what the screen size) and fully user-configurable.
|
||||
|
||||
To configure menu, add this in `[extra]` section
|
||||
of your `config.toml`:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# menu is enabled by adding menu_items (optional)
|
||||
menu_items = [
|
||||
# each of these is optional, name and url are required
|
||||
# $BASE_URL is going to be substituted by base_url from configuration
|
||||
{name = "blog", url = "$BASE_URL"},
|
||||
|
||||
# tags should only be enabled if you have "tags" taxonomy
|
||||
# see documentation below for more details
|
||||
{name = "tags", url = "$BASE_URL/tags"},
|
||||
{name = "archive", url = "$BASE_URL/archive"},
|
||||
{name = "about me", url = "$BASE_URL/about"},
|
||||
|
||||
# set newtab to true to make the link open in new tab
|
||||
{name = "github", url = "url-to-your-github", newtab = true},
|
||||
]
|
||||
```
|
||||
|
||||
### Tags
|
||||
|
||||
The theme optionally supports tags. To enable them, create
|
||||
a "tags" taxonomy in your `config.toml`:
|
||||
|
||||
```toml
|
||||
taxonomies = [
|
||||
{name = "tags"},
|
||||
]
|
||||
```
|
||||
|
||||
Enabling tags will create a new `/tags` page, and
|
||||
cause them to show up in `archive` section. Note
|
||||
that you still need to create a menu link to the tags
|
||||
page manually.
|
||||
|
||||
### Pagination
|
||||
|
||||
Pagination is fully supported for post list (main site)
|
||||
and intra-post (you can navigate to earlier and later posts).
|
||||
|
||||
To make sure pagination works properly, you must first configure
|
||||
it in `content/_index.md`:
|
||||
|
||||
```
|
||||
+++
|
||||
# number of pages to paginate by
|
||||
paginate_by = 2
|
||||
|
||||
# sorting order for pagination
|
||||
sort_by = "date"
|
||||
+++
|
||||
```
|
||||
|
||||
Then, tweak the theme's pagination config in `config.toml`:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# Whether to show links to earlier and later posts
|
||||
# on each post page (defaults to true).
|
||||
enable_post_view_navigation = true
|
||||
|
||||
# The text shown at the bottom of a post,
|
||||
# before earlier/later post links.
|
||||
# Defaults to "Thanks for reading! Read other posts?"
|
||||
post_view_navigation_prompt = "Read more"
|
||||
```
|
||||
|
||||
### Language code
|
||||
|
||||
Internationalization / translation is not supported
|
||||
but you can set the HTML language code for your
|
||||
site:
|
||||
|
||||
```toml
|
||||
default_language = "en"
|
||||
```
|
||||
|
||||
### Hack font subset
|
||||
|
||||
By default, the theme uses a mixed subset of the Hack font.
|
||||
Normal weight font uses full character set
|
||||
(for Unicode icons and special symbols), but all others
|
||||
(bold, italic etc) use a limited subset.
|
||||
|
||||
This results in much smaller transfer sizes, but the subset
|
||||
might not contain all the Unicode characters you need.
|
||||
|
||||
You can enable full unicode support in `config.toml`:
|
||||
|
||||
```toml
|
||||
[extra]
|
||||
|
||||
# Use full Hack character set, not just a subset.
|
||||
# Switch this to true if you need full unicode support.
|
||||
# Defaults to false.
|
||||
use_full_hack_font = true
|
||||
```
|
||||
|
||||
Also see [Hack's docs](https://github.com/source-foundry/Hack/blob/master/docs/WEBFONT_USAGE.md).
|
||||
|
||||
### Favicon
|
||||
|
||||
The theme supports adding a global favicon (applies to
|
||||
all pages) to the site:
|
||||
|
||||
```toml
|
||||
# Optional: Global favicon URL and mimetype.
|
||||
# Mimetype defaults to "image/x-icon".
|
||||
# The URL should point at a file located
|
||||
# in your site's "static" directory.
|
||||
favicon = "/favicon.png"
|
||||
favicon_mimetype = "image/png"
|
||||
```
|
||||
|
||||
### Page titles
|
||||
|
||||
The theme allows you to configure how the page titles (the `<title>` elements) are rendered.
|
||||
|
||||
Use `"combined"` to render titles as `"Page title | Main title"`.
|
||||
|
||||
```toml
|
||||
# Optional: Set how <title> elements are rendered.
|
||||
# Values:
|
||||
# - "main_only" -- only the main title (`config.title`) is rendered.
|
||||
# - "page_only" -- only the page title (if defined) is rendered,
|
||||
# falling back to `config.title` if not defined or empty.
|
||||
# - "combined" -- combine like so: "page_title | main_title",
|
||||
# or if page_title is not defined or empty, fall back to `main_title`
|
||||
#
|
||||
# Note that the main (index) page only has the main title.
|
||||
page_titles = "combined"
|
||||
```
|
||||
|
||||
All the configuration options are also described in
|
||||
[`config.toml`](../master/config.toml).
|
||||
|
||||
## Extending
|
||||
|
||||
Each of the templates defines named blocks, so
|
||||
it should be quite easy to customize the most common things.
|
||||
|
||||
For example, if you want to add extra `<meta>` tags to the
|
||||
base template, `index.html`, create file like this in `templates/index.html`:
|
||||
|
||||
```html
|
||||
{% extends "terminimal/templates/index.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
<meta name="description" content="My awesome website"/>
|
||||
<meta name="keywords" content="Hacking,Programming,Ranting"/>
|
||||
{% endblock %}
|
||||
```
|
||||
|
||||
## How to contribute
|
||||
|
||||
If you spot any bugs or wish to contribute new features, please create a new
|
||||
[Pull Request](https://github.com/pawroman/zola-theme-terminimal/pulls).
|
||||
|
||||
## Changes compared to the original theme
|
||||
|
||||
This theme has been forked from https://github.com/panr/hugo-theme-terminal
|
||||
|
||||
- Slight changes in the layout and styling.
|
||||
- Content has been centered (instead of left-aligned).
|
||||
- The header stripes have been spaced out.
|
||||
- Tweaks to pagination, especially on mobile (small screens).
|
||||
- The post title underline is dashed instead of doubly-dotted.
|
||||
- All links are underlined, as per
|
||||
[Brutalist Web Design Guidelines](https://www.brutalist-web.design/).
|
||||
- Tweaks to header font sizes.
|
||||
- Minor footer tweaks.
|
||||
|
||||
- Absolutely **no JavaScript**.
|
||||
- No JavaScript needed to pre-process anything.
|
||||
Zola with its Sass pre-processor is the only dependency.
|
||||
- There's no menu trigger.
|
||||
- Things load crazy fast, as it's all static content.
|
||||
- Prism.js syntax highlighting is not supported (you can use
|
||||
[Zola's](https://www.getzola.org/documentation/content/syntax-highlighting/)).
|
||||
|
||||
- All references to social media (e.g. Twitter) have been removed.
|
||||
|
||||
- All references to external URLs (e.g. Google CDN) have been removed.
|
||||
This theme's static assets are meant to be served from where it's hosted.
|
||||
|
||||
- [Hack](https://github.com/source-foundry/Hack) is the default font.
|
||||
|
||||
- The default color theme is blue (original uses orange).
|
||||
|
||||
### New features
|
||||
|
||||
- You can pick the accent color as well as background color.
|
||||
There's a new `dark` background. See [Configuration](#configuration)
|
||||
below for details.
|
||||
- Active "section" links will change color indicating the
|
||||
active section. This is all static, done at template level.
|
||||
|
||||
### Features retained from the original
|
||||
|
||||
- 5 color themes, depending on your preference:
|
||||
blue (default), green, orange, pink, red.
|
||||
- The shortcodes `image` and `figure` (See [Shortcodes](#shortcodes)).
|
||||
- Fully responsive.
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2019 Paweł Romanowski (pawroman)
|
||||
|
||||
Original theme: Copyright © 2019 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
||||
|
||||
The theme is released under the MIT License.
|
||||
Check the [license file](../master/LICENSE.md)
|
||||
for more information.
|
||||
|
||||
The license for Hack fonts used is included in
|
||||
[LICENSE-Hack.md](../master/LICENSE-Hack.md).
|
103
themes/terminimal/config.toml
Normal file
103
themes/terminimal/config.toml
Normal file
|
@ -0,0 +1,103 @@
|
|||
# Be sure to change these!
|
||||
base_url = "https://pawroman.github.io/zola-theme-terminimal"
|
||||
title = "Zola Terminimal theme"
|
||||
|
||||
# Sass compilation is required
|
||||
compile_sass = true
|
||||
|
||||
# The theme supports feeds (RSS and ATOM)
|
||||
generate_feeds = true
|
||||
|
||||
# Use `rss.xml` for RSS feeds and `atom.xml` for ATOM.
|
||||
feed_filenames = ["rss.xml", "atom.xml"]
|
||||
|
||||
# Optional: enable tags
|
||||
taxonomies = [
|
||||
{name = "tags"}
|
||||
]
|
||||
|
||||
# Code highlighting
|
||||
[markdown]
|
||||
highlight_code = true
|
||||
highlight_theme = "boron"
|
||||
|
||||
[extra]
|
||||
|
||||
# One of: blue, green, orange, pink, red.
|
||||
# Defaults to blue.
|
||||
# Append -light for light themes, e.g. blue-light
|
||||
# Or append -auto, e.g. blue-auto
|
||||
accent_color = "blue"
|
||||
|
||||
# One of: blue, dark, green, orange, pink, red, light, auto
|
||||
# Enabling dark background will also modify primary font color to be darker.
|
||||
# Defaults to accent color (or, if not accent color specified, to blue).
|
||||
background_color = "blue"
|
||||
|
||||
# The logo text - defaults to "Terminimal theme"
|
||||
logo_text = "Terminimal theme"
|
||||
|
||||
# The logo link - defaults to base_url.
|
||||
#logo_home_link = "/take/me/away!"
|
||||
|
||||
# Author name: when specified, modifies the default
|
||||
# copyright text. Apart from author, it will
|
||||
# contain current year and a link to the theme.
|
||||
#author = "My Name"
|
||||
|
||||
# Copyright text in HTML format. If specified,
|
||||
# entirely replaces default copyright and author.
|
||||
#copyright_html = "My custom <b>copyright</b>"
|
||||
|
||||
# menu is enabled by adding menu_items (optional)
|
||||
menu_items = [
|
||||
# each of these is optional, name and url are required
|
||||
# $BASE_URL is going to be substituted by base_url from configuration
|
||||
{name = "blog", url = "$BASE_URL"},
|
||||
|
||||
# tags should only be enabled if you have "tags" taxonomy
|
||||
# see documentation below for more details
|
||||
{name = "tags", url = "$BASE_URL/tags"},
|
||||
{name = "archive", url = "$BASE_URL/archive"},
|
||||
{name = "about me", url = "$BASE_URL/about"},
|
||||
|
||||
# set newtab to true to make the link open in new tab
|
||||
{name = "github", url = "https://github.com/pawroman/zola-theme-terminimal", newtab = true},
|
||||
]
|
||||
|
||||
# Whether to show links to earlier and later (aka. higher/lower) posts
|
||||
# on each post page (defaults to true).
|
||||
enable_post_view_navigation = true
|
||||
|
||||
# The text shown at the bottom of a post,
|
||||
# before earlier/later post links.
|
||||
# Defaults to "Thanks for reading! Read other posts?"
|
||||
post_view_navigation_prompt = "Thanks for reading! Read other posts?"
|
||||
|
||||
# Use full Hack character set, not just a subset.
|
||||
# Switch this to true if you need full unicode support.
|
||||
# Defaults to false.
|
||||
use_full_hack_font = false
|
||||
|
||||
# Optional: Global favicon URL and mimetype.
|
||||
# Mimetype defaults to "image/x-icon".
|
||||
# The URL should point at a file located
|
||||
# in your site's "static" directory.
|
||||
# favicon = "/favicon.png"
|
||||
# favicon_mimetype = "image/png"
|
||||
|
||||
# Optional: Set how <title> elements are rendered.
|
||||
# Values:
|
||||
# - "main_only" -- only the main title (`config.title`) is rendered.
|
||||
# - "page_only" -- only the page title (if defined) is rendered,
|
||||
# falling back to `config.title` if not defined or empty.
|
||||
# - "combined" -- combine like so: "page_title | main_title",
|
||||
# or if page_title is not defined or empty, fall back to `main_title`
|
||||
#
|
||||
# Note that the main (index) page only has the main title.
|
||||
page_titles = "main_only"
|
||||
|
||||
# Optional: default image to use for OpenGraph.
|
||||
# If the page doesnt set og_image, use this one as fallback. Usefull
|
||||
# for indexes and taxonomies' pages.
|
||||
#default_og_image = "static/ocean.jpg"
|
101
themes/terminimal/content/welcome-terminimal-theme.md
Normal file
101
themes/terminimal/content/welcome-terminimal-theme.md
Normal file
|
@ -0,0 +1,101 @@
|
|||
+++
|
||||
title = "Welcome to Terminimal Theme for Zola"
|
||||
date = 2019-02-04
|
||||
|
||||
[taxonomies]
|
||||
tags = ["zola", "theme", "showcase"]
|
||||
+++
|
||||
|
||||
Welcome to Terminimal! This is a theme showcase post.
|
||||
|
||||
Code block (using "boron" theme):
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
|
||||
class HelloPrinter:
|
||||
def __init__(self, thing):
|
||||
self.thing = thing
|
||||
|
||||
def __call__(self):
|
||||
print(f"Hello, {self.thing}!")
|
||||
|
||||
|
||||
printer = HelloPrinter("World")
|
||||
printer()
|
||||
|
||||
# prints: Hello, World!
|
||||
```
|
||||
|
||||
Inline code: `print("Hello world!")`.
|
||||
|
||||
Basic typography:
|
||||
|
||||
*Italic text*. **Bold text**. _**Italic bold**_. Link: [click me](#)
|
||||
|
||||
# Header 1
|
||||
## Header 2
|
||||
### Header 3
|
||||
#### Header 4
|
||||
|
||||
Quote:
|
||||
|
||||
> "Theory is when you know everything but nothing works.
|
||||
Practice is when everything works but no one knows why.
|
||||
In our lab, theory and practice are combined: nothing works and no one knows why."
|
||||
|
||||
Lists:
|
||||
|
||||
- A
|
||||
- B
|
||||
- CDEF
|
||||
- Nested Item
|
||||
- And more nesting
|
||||
- GHIJ
|
||||
|
||||
|
||||
1. One
|
||||
2. Two
|
||||
3. Three
|
||||
|
||||
Horizontal line:
|
||||
|
||||
---
|
||||
|
||||
This is where the post summary ends.
|
||||
|
||||
<!-- more -->
|
||||
|
||||
The second part follows here.
|
||||
|
||||
## Shortcodes
|
||||
|
||||
`figure` shortcode:
|
||||
|
||||
```
|
||||
figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
|
||||
style="width: 25%;",
|
||||
position="center",
|
||||
caption_position="left",
|
||||
caption="**Ferris**, the (unofficial) Rust mascot",
|
||||
caption_style="font-weight: bold; font-style: italic;")
|
||||
```
|
||||
|
||||
{{ figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
|
||||
style="width: 25%;",
|
||||
position="center",
|
||||
caption_position="left",
|
||||
caption="**Ferris**, the (unofficial) Rust mascot",
|
||||
caption_style="font-style: italic;") }}
|
||||
|
||||
---
|
||||
|
||||
`image` shortcode:
|
||||
|
||||
```
|
||||
image(src="https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg",
|
||||
position="left")
|
||||
```
|
||||
|
||||
{{ image(src="https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg",
|
||||
position="left") }}
|
92
themes/terminimal/sass/buttons.scss
Normal file
92
themes/terminimal/sass/buttons.scss
Normal file
|
@ -0,0 +1,92 @@
|
|||
.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-align: center;
|
||||
border-radius: 8px;
|
||||
border: 1px solid transparent;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
|
||||
/* variants */
|
||||
|
||||
&.outline {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
padding: 8px 18px;
|
||||
|
||||
:hover {
|
||||
transform: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.primary {
|
||||
box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 2px 6px rgba(50, 50, 93, .21), 0 1px 3px rgba(0, 0, 0, .08);
|
||||
}
|
||||
}
|
||||
|
||||
&.link {
|
||||
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;
|
||||
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-align: center;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
border-radius: 8px;
|
||||
border: 1px solid transparent;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
}
|
||||
}
|
14
themes/terminimal/sass/color/background_auto.scss
Normal file
14
themes/terminimal/sass/color/background_auto.scss
Normal file
|
@ -0,0 +1,14 @@
|
|||
:root {
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
--background: white;
|
||||
|
||||
--color: #101010;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--background: #101010;
|
||||
|
||||
--color: #A9B7C6;
|
||||
}
|
||||
}
|
3
themes/terminimal/sass/color/background_blue.scss
Normal file
3
themes/terminimal/sass/color/background_blue.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #1D212C;
|
||||
}
|
5
themes/terminimal/sass/color/background_dark.scss
Normal file
5
themes/terminimal/sass/color/background_dark.scss
Normal file
|
@ -0,0 +1,5 @@
|
|||
:root {
|
||||
--background: #101010;
|
||||
|
||||
--color: #A9B7C6;
|
||||
}
|
3
themes/terminimal/sass/color/background_green.scss
Normal file
3
themes/terminimal/sass/color/background_green.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #1F222A;
|
||||
}
|
3
themes/terminimal/sass/color/background_light.scss
Normal file
3
themes/terminimal/sass/color/background_light.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #f0f0f0;
|
||||
}
|
3
themes/terminimal/sass/color/background_orange.scss
Normal file
3
themes/terminimal/sass/color/background_orange.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #222129;
|
||||
}
|
3
themes/terminimal/sass/color/background_pink.scss
Normal file
3
themes/terminimal/sass/color/background_pink.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #21202C;
|
||||
}
|
3
themes/terminimal/sass/color/background_red.scss
Normal file
3
themes/terminimal/sass/color/background_red.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
:root {
|
||||
--background: #221F29;
|
||||
}
|
29
themes/terminimal/sass/color/blue-auto.scss
Normal file
29
themes/terminimal/sass/color/blue-auto.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
:root {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--accent: rgb(35,176,255);
|
||||
--accent-alpha-70: rgba(35,176,255,.7);
|
||||
--accent-alpha-20: rgba(35,176,255,.2);
|
||||
|
||||
--background: #101010;
|
||||
--color: #f0f0f0;
|
||||
--border-color: rgba(255,240,224,.125);
|
||||
|
||||
div.logo {
|
||||
color: black;
|
||||
}
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
--accent: rgb(32,128,192);
|
||||
--accent-alpha-70: rgba(32,128,192,.7);
|
||||
--accent-alpha-20: rgba(32,128,192,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #201030;
|
||||
--border-color: rgba(0,0,16,.125);
|
||||
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
12
themes/terminimal/sass/color/blue-light.scss
Normal file
12
themes/terminimal/sass/color/blue-light.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
:root {
|
||||
--accent: rgb(32,128,192);
|
||||
--accent-alpha-70: rgba(32,128,192,.7);
|
||||
--accent-alpha-20: rgba(32,128,192,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #1D212C;
|
||||
--border-color: rgba(0, 0, 0, .1);
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
9
themes/terminimal/sass/color/blue.scss
Normal file
9
themes/terminimal/sass/color/blue.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
:root {
|
||||
--accent: rgb(35,176,255);
|
||||
--accent-alpha-70: rgba(35,176,255,.7);
|
||||
--accent-alpha-20: rgba(35,176,255,.2);
|
||||
|
||||
--background: #1D212C;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
29
themes/terminimal/sass/color/green-auto.scss
Normal file
29
themes/terminimal/sass/color/green-auto.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
:root {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--accent: rgb(120,226,160);
|
||||
--accent-alpha-70: rgba(120,226,160,.7);
|
||||
--accent-alpha-20: rgba(120,226,160,.2);
|
||||
|
||||
--background: #101010;
|
||||
--color: #f0f0f0;
|
||||
--border-color: rgba(255,240,224,.125);
|
||||
|
||||
div.logo {
|
||||
color: black;
|
||||
}
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
--accent: rgb(24, 192, 128);
|
||||
--accent-alpha-70: rgba(24, 192, 128,.7);
|
||||
--accent-alpha-20: rgba(24, 192, 128,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #201030;
|
||||
--border-color: rgba(0,0,16,.125);
|
||||
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
12
themes/terminimal/sass/color/green-light.scss
Normal file
12
themes/terminimal/sass/color/green-light.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
:root {
|
||||
--accent: rgb(24, 192, 128);
|
||||
--accent-alpha-70: rgba(24, 192, 128,.7);
|
||||
--accent-alpha-20: rgba(24, 192, 128,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #1D212C;
|
||||
--border-color: rgba(0, 0, 0, .1);
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
9
themes/terminimal/sass/color/green.scss
Normal file
9
themes/terminimal/sass/color/green.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
:root {
|
||||
--accent: rgb(120,226,160);
|
||||
--accent-alpha-70: rgba(120,226,160,.7);
|
||||
--accent-alpha-20: rgba(120,226,160,.2);
|
||||
|
||||
--background: #1F222A;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
29
themes/terminimal/sass/color/orange-auto.scss
Normal file
29
themes/terminimal/sass/color/orange-auto.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
:root {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--accent: rgb(255,168,106);
|
||||
--accent-alpha-70: rgba(255,168,106,.7);
|
||||
--accent-alpha-20: rgba(255,168,106,.2);
|
||||
|
||||
--background: #101010;
|
||||
--color: #f0f0f0;
|
||||
--border-color: rgba(255,240,224,.125);
|
||||
|
||||
div.logo {
|
||||
color: black;
|
||||
}
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
--accent: rgb(240,128,48);
|
||||
--accent-alpha-70: rgba(240,128,48,.7);
|
||||
--accent-alpha-20: rgba(240,128,48,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #201030;
|
||||
--border-color: rgba(0,0,16,.125);
|
||||
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
12
themes/terminimal/sass/color/orange-light.scss
Normal file
12
themes/terminimal/sass/color/orange-light.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
:root {
|
||||
--accent: rgb(240,128,48);
|
||||
--accent-alpha-70: rgba(240,128,48,.7);
|
||||
--accent-alpha-20: rgba(240,128,48,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #1D212C;
|
||||
--border-color: rgba(0, 0, 0, .1);
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
9
themes/terminimal/sass/color/orange.scss
Normal file
9
themes/terminimal/sass/color/orange.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
:root {
|
||||
--accent: rgb(255,168,106);
|
||||
--accent-alpha-70: rgba(255,168,106,.7);
|
||||
--accent-alpha-20: rgba(255,168,106,.2);
|
||||
|
||||
--background: #222129;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
29
themes/terminimal/sass/color/pink-auto.scss
Normal file
29
themes/terminimal/sass/color/pink-auto.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
:root {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--accent: rgb(224,64,192);
|
||||
--accent-alpha-70: rgba(224,64,192);
|
||||
--accent-alpha-20: rgba(224,64,192,.2);
|
||||
|
||||
--background: #101010;
|
||||
--color: #f0f0f0;
|
||||
--border-color: rgba(255,240,224,.125);
|
||||
|
||||
div.logo {
|
||||
color: black;
|
||||
}
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
--accent: rgb(238,114,241);
|
||||
--accent-alpha-70: rgba(238,114,241,.7);
|
||||
--accent-alpha-20: rgba(238,114,241,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #201030;
|
||||
--border-color: rgba(0,0,16,.125);
|
||||
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
12
themes/terminimal/sass/color/pink-light.scss
Normal file
12
themes/terminimal/sass/color/pink-light.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
:root {
|
||||
--accent: rgb(224,64,192);
|
||||
--accent-alpha-70: rgba(224,64,192);
|
||||
--accent-alpha-20: rgba(224,64,192,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #1D212C;
|
||||
--border-color: rgba(0, 0, 0, .1);
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
9
themes/terminimal/sass/color/pink.scss
Normal file
9
themes/terminimal/sass/color/pink.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
:root {
|
||||
--accent: rgb(238,114,241);
|
||||
--accent-alpha-70: rgba(238,114,241,.7);
|
||||
--accent-alpha-20: rgba(238,114,241,.2);
|
||||
|
||||
--background: #21202C;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
29
themes/terminimal/sass/color/red-auto.scss
Normal file
29
themes/terminimal/sass/color/red-auto.scss
Normal file
|
@ -0,0 +1,29 @@
|
|||
:root {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--accent: rgb(255,98,102);
|
||||
--accent-alpha-70: rgba(255,98,102,.7);
|
||||
--accent-alpha-20: rgba(255,98,102,.2);
|
||||
|
||||
--background: #101010;
|
||||
--color: #f0f0f0;
|
||||
--border-color: rgba(255,240,224,.125);
|
||||
|
||||
div.logo {
|
||||
color: black;
|
||||
}
|
||||
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
--accent: rgb(240,48,64);
|
||||
--accent-alpha-70: rgba(240,48,64,.7);
|
||||
--accent-alpha-20: rgba(240,48,64,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #201030;
|
||||
--border-color: rgba(0,0,16,.125);
|
||||
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
12
themes/terminimal/sass/color/red-light.scss
Normal file
12
themes/terminimal/sass/color/red-light.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
:root {
|
||||
--accent: rgb(240,48,64);
|
||||
--accent-alpha-70: rgba(240,48,64,.7);
|
||||
--accent-alpha-20: rgba(240,48,64,.2);
|
||||
|
||||
--background: white;
|
||||
--color: #1D212C;
|
||||
--border-color: rgba(0, 0, 0, .1);
|
||||
div.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
9
themes/terminimal/sass/color/red.scss
Normal file
9
themes/terminimal/sass/color/red.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
:root {
|
||||
--accent: rgb(255,98,102);
|
||||
--accent-alpha-70: rgba(255,98,102,.7);
|
||||
--accent-alpha-20: rgba(255,98,102,.2);
|
||||
|
||||
--background: #221F29;
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
34
themes/terminimal/sass/font-hack-subset.scss
Normal file
34
themes/terminimal/sass/font-hack-subset.scss
Normal file
|
@ -0,0 +1,34 @@
|
|||
/*!
|
||||
* Hack typeface https://github.com/source-foundry/Hack
|
||||
* License: https://github.com/source-foundry/Hack/blob/master/LICENSE.md
|
||||
*/
|
||||
/* FONT PATHS
|
||||
* -------------------------- */
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
/* Use full version (not a subset) for unicode icon support */
|
||||
src: url('fonts/hack-regular.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-regular.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bold-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bold-subset.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-italic-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-italic-webfont.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bolditalic-subset.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bolditalic-subset.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
33
themes/terminimal/sass/font-hack.scss
Normal file
33
themes/terminimal/sass/font-hack.scss
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*!
|
||||
* Hack typeface https://github.com/source-foundry/Hack
|
||||
* License: https://github.com/source-foundry/Hack/blob/master/LICENSE.md
|
||||
*/
|
||||
/* FONT PATHS
|
||||
* -------------------------- */
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-regular.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-regular.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bold.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bold.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-italic.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-italic.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Hack';
|
||||
src: url('fonts/hack-bolditalic.woff2?sha=3114f1256') format('woff2'), url('fonts/hack-bolditalic.woff?sha=3114f1256') format('woff');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
64
themes/terminimal/sass/footer.scss
Normal file
64
themes/terminimal/sass/footer.scss
Normal file
|
@ -0,0 +1,64 @@
|
|||
@import "variables";
|
||||
|
||||
.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 (max-width: $tablet-max-width) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
font-size: 1rem;
|
||||
color: var(--light-color-secondary);
|
||||
|
||||
&--user {
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
& > *:first-child:not(:only-child) {
|
||||
margin-right: 10px;
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
flex-direction: column;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.copyright-theme-sep {
|
||||
@media (max-width: $tablet-max-width) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.copyright-theme {
|
||||
@media (max-width: $tablet-max-width) {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
96
themes/terminimal/sass/header.scss
Normal file
96
themes/terminimal/sass/header.scss
Normal file
|
@ -0,0 +1,96 @@
|
|||
@import "variables";
|
||||
|
||||
@mixin menu {
|
||||
position: absolute;
|
||||
background: var(--background);
|
||||
box-shadow: var(--shadow);
|
||||
color: white;
|
||||
border: 2px solid;
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
list-style: none;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
|
||||
&__inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
&__logo {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
background: repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 16px);
|
||||
display: block;
|
||||
width: 100%;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
flex: 0 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
margin: 20px 0;
|
||||
|
||||
&__inner {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
&.active {
|
||||
color: var(--accent-alpha-70);
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__sub-inner {
|
||||
position: relative;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
&:not(:only-child) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
&-more {
|
||||
@include menu;
|
||||
top: 35px;
|
||||
left: 0;
|
||||
|
||||
&-trigger {
|
||||
color: var(--accent);
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
8
themes/terminimal/sass/logo.scss
Normal file
8
themes/terminimal/sass/logo.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
background: var(--accent);
|
||||
color: black;
|
||||
padding: 5px 10px;
|
||||
}
|
278
themes/terminimal/sass/main.scss
Normal file
278
themes/terminimal/sass/main.scss
Normal file
|
@ -0,0 +1,278 @@
|
|||
@import "variables";
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family:
|
||||
Hack,
|
||||
DejaVu Sans Mono,
|
||||
Monaco,
|
||||
Consolas,
|
||||
Ubuntu Mono,
|
||||
monospace;
|
||||
font-size: 1rem;
|
||||
line-height: 1.54;
|
||||
background-color: var(--background);
|
||||
color: var(--color);
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
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,
|
||||
img {
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.center,
|
||||
img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
&.right,
|
||||
img {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: 14px;
|
||||
padding: 5px 10px;
|
||||
margin-top: 5px;
|
||||
background: var(--accent);
|
||||
color: var(--background);
|
||||
|
||||
&.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.right {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
font-family:
|
||||
Hack,
|
||||
DejaVu Sans Mono,
|
||||
Monaco,
|
||||
Consolas,
|
||||
Ubuntu Mono,
|
||||
monospace;
|
||||
font-feature-settings: normal;
|
||||
background: var(--accent-alpha-20);
|
||||
padding: 1px 6px;
|
||||
margin: 0 2px;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family:
|
||||
Hack,
|
||||
DejaVu Sans Mono,
|
||||
Monaco,
|
||||
Consolas,
|
||||
Ubuntu Mono,
|
||||
monospace;
|
||||
padding: 20px;
|
||||
font-size: 0.95rem;
|
||||
overflow: auto;
|
||||
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-top: 1px solid var(--accent);
|
||||
border-bottom: 1px solid var(--accent);
|
||||
margin: 40px 0;
|
||||
padding: 25px;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "”";
|
||||
font-family: Georgia, serif;
|
||||
font-size: 3.875rem;
|
||||
position: absolute;
|
||||
left: -40px;
|
||||
top: -20px;
|
||||
}
|
||||
|
||||
p:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p:last-of-type {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
p:before {
|
||||
content: ">";
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: -25px;
|
||||
color: var(--accent);
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
table-layout: fixed;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
table,
|
||||
th,
|
||||
td {
|
||||
border: 1px dashed var(--accent);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
th {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-left: 30px;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 40px;
|
||||
max-width: 100%;
|
||||
min-height: 100vh;
|
||||
margin: 0 auto;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
hr {
|
||||
width: 100%;
|
||||
border: none;
|
||||
background: var(--border-color);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
77
themes/terminimal/sass/pagination.scss
Normal file
77
themes/terminimal/sass/pagination.scss
Normal file
|
@ -0,0 +1,77 @@
|
|||
@import 'variables';
|
||||
|
||||
.pagination {
|
||||
margin-top: 50px;
|
||||
|
||||
&__title {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
margin: 100px 0 20px;
|
||||
|
||||
&-h {
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
padding: 5px 10px;
|
||||
background: var(--background);
|
||||
font-size: .8rem;
|
||||
text-transform: uppercase;
|
||||
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;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
max-width: 40%;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
appearance: none;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
+ .button {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
display: flex;
|
||||
padding: 8px 16px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&__text {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
135
themes/terminimal/sass/post.scss
Normal file
135
themes/terminimal/sass/post.scss
Normal file
|
@ -0,0 +1,135 @@
|
|||
@import "variables";
|
||||
|
||||
.posts {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.post {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
margin: 20px auto;
|
||||
padding: 20px 0;
|
||||
|
||||
@media (max-width: $tablet-max-width) {
|
||||
max-width: 660px;
|
||||
}
|
||||
|
||||
&:not(:last-of-type) {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
%meta {
|
||||
font-size: 1rem;
|
||||
margin-bottom: 10px;
|
||||
color: var(--accent-alpha-70);
|
||||
}
|
||||
|
||||
&-meta {
|
||||
@extend %meta;
|
||||
}
|
||||
|
||||
&-meta-inline {
|
||||
@extend %meta;
|
||||
|
||||
display: inline;
|
||||
}
|
||||
|
||||
&-title {
|
||||
--border: 2px dashed var(--accent);
|
||||
position: relative;
|
||||
color: var(--accent);
|
||||
margin: 0 0 15px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: var(--border);
|
||||
font-weight: normal;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
%tags {
|
||||
margin-bottom: 20px;
|
||||
font-size: 1rem;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
&-tags {
|
||||
@extend %tags;
|
||||
|
||||
display: block;
|
||||
}
|
||||
|
||||
&-tags-inline {
|
||||
@extend %tags;
|
||||
|
||||
display: inline;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&-content {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
&-cover {
|
||||
border: 20px solid var(--accent);
|
||||
background: transparent;
|
||||
margin: 40px 0;
|
||||
padding: 20px;
|
||||
|
||||
@media (max-width: $phone-max-width) {
|
||||
padding: 10px;
|
||||
border-width: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
|
||||
li:before {
|
||||
content: '►';
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
color: var(--accent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post--regulation {
|
||||
h1 {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&+ h2 {
|
||||
margin-top: -10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.post-list {
|
||||
.post-date {
|
||||
color: var(--accent-alpha-70);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.post-list-title {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.post-tag {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
8
themes/terminimal/sass/style.scss
Normal file
8
themes/terminimal/sass/style.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
@import 'buttons';
|
||||
|
||||
@import 'header';
|
||||
@import 'logo';
|
||||
@import 'main';
|
||||
@import 'post';
|
||||
@import 'pagination';
|
||||
@import 'footer';
|
2
themes/terminimal/sass/variables.scss
Normal file
2
themes/terminimal/sass/variables.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
$phone-max-width: 683px;
|
||||
$tablet-max-width: 899px;
|
BIN
themes/terminimal/screenshot.png
Normal file
BIN
themes/terminimal/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
BIN
themes/terminimal/static/fonts/hack-bold-subset.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-bold-subset.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bold-subset.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-bold-subset.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bold.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-bold.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bold.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-bold.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bolditalic-subset.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-bolditalic-subset.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bolditalic-subset.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-bolditalic-subset.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bolditalic.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-bolditalic.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-bolditalic.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-bolditalic.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-italic-subset.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-italic-subset.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-italic-subset.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-italic-subset.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-italic.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-italic.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-italic.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-italic.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-regular-subset.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-regular-subset.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-regular-subset.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-regular-subset.woff2
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-regular.woff
Normal file
BIN
themes/terminimal/static/fonts/hack-regular.woff
Normal file
Binary file not shown.
BIN
themes/terminimal/static/fonts/hack-regular.woff2
Normal file
BIN
themes/terminimal/static/fonts/hack-regular.woff2
Normal file
Binary file not shown.
16
themes/terminimal/templates/404.html
Normal file
16
themes/terminimal/templates/404.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block title %}
|
||||
404 | {{ config.title }}
|
||||
{% endblock title %}
|
||||
|
||||
{% block header_menu %}
|
||||
{{ menu_macros::menu_for(config=config, current_item="") }}
|
||||
{% endblock header_menu %}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">{% block heading %}Lost?{% endblock heading %}</h1>
|
||||
<p>{% block message %}This page does not exist.{% endblock message %}</p>
|
||||
</div>
|
||||
{% endblock content %}
|
15
themes/terminimal/templates/archive.html
Normal file
15
themes/terminimal/templates/archive.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">{{ page.title }}</h1>
|
||||
|
||||
{% set section = get_section(path="_index.md") %}
|
||||
|
||||
{{ post_macros::list_posts(pages=section.pages) }}
|
||||
</div>
|
||||
{% endblock content %}
|
136
themes/terminimal/templates/index.html
Normal file
136
themes/terminimal/templates/index.html
Normal file
|
@ -0,0 +1,136 @@
|
|||
{% import "macros/date.html" as date_macros -%}
|
||||
{% import "macros/head.html" as head_macros -%}
|
||||
{% import "macros/menu.html" as menu_macros -%}
|
||||
{% import "macros/post.html" as post_macros -%}
|
||||
{% import "macros/title.html" as title_macros -%}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{%- if config.default_language -%}{{ config.default_language }}{%- else -%}en{%- endif -%}">
|
||||
|
||||
<head>
|
||||
<title>{%- block title %}{{ config.title }}{% endblock title -%}</title>
|
||||
{{ head_macros::head(config=config) }}
|
||||
|
||||
{%- block open_graph %}{{ head_macros::open_graph(config=config) }}{% endblock open_graph -%}
|
||||
|
||||
{%- if config.generate_feeds %}
|
||||
{%- for feed in config.feed_filenames %}
|
||||
{%- if feed is containing('atom') %}
|
||||
<link rel="alternate" type="application/atom+xml" title="{{ config.title }} Atom Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
||||
{%- endif %}
|
||||
|
||||
{%- if feed is containing('rss') %}
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ config.title }} RSS Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if config.extra.favicon %}
|
||||
<link rel="shortcut icon" type="{{ config.extra.favicon_mimetype | default(value="image/x-icon") | safe }}" href="{{ config.extra.favicon | safe }}">
|
||||
{% endif -%}
|
||||
|
||||
{%- block extra_head %}
|
||||
{% endblock extra_head -%}
|
||||
</head>
|
||||
|
||||
<body class="">
|
||||
<div class="container">
|
||||
{% block header %}
|
||||
<header class="header">
|
||||
<div class="header__inner">
|
||||
<div class="header__logo">
|
||||
{%- if config.extra.logo_home_link %}
|
||||
{% set logo_link = config.extra.logo_home_link %}
|
||||
{% else %}
|
||||
{% set logo_link = config.base_url %}
|
||||
{% endif -%}
|
||||
<a href="{{ logo_link | safe }}" style="text-decoration: none;">
|
||||
<div class="logo">
|
||||
{% block logo_content %}
|
||||
{%- if config.extra.logo_text %}
|
||||
{{ config.extra.logo_text }}
|
||||
{% else %}
|
||||
Terminimal theme
|
||||
{% endif -%}
|
||||
{% endblock logo_content %}
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% block header_menu %}
|
||||
{{ menu_macros::menu(config=config, current_path=current_path) }}
|
||||
{% endblock header_menu %}
|
||||
</header>
|
||||
{% endblock header %}
|
||||
|
||||
<div class="content">
|
||||
{% block content %}
|
||||
<div class="posts">
|
||||
{%- if paginator %}
|
||||
{%- set show_pages = paginator.pages -%}
|
||||
{% else %}
|
||||
{%- set show_pages = section.pages -%}
|
||||
{% endif -%}
|
||||
|
||||
{%- for page in show_pages %}
|
||||
<div class="post on-list">
|
||||
{{ post_macros::header(page=page) }}
|
||||
|
||||
{{ post_macros::content(page=page, summary=true, show_only_description=page.extra.show_only_description | default(value=false)) }}
|
||||
</div>
|
||||
{% endfor -%}
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
{%- if paginator.previous %}
|
||||
<span class="button previous">
|
||||
<a href="{{ paginator.previous | safe }}">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">Newer posts</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif -%}
|
||||
{%- if paginator.next %}
|
||||
<span class="button next">
|
||||
<a href="{{ paginator.next | safe }}">
|
||||
<span class="button__text">Older posts</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif -%}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
</div>
|
||||
|
||||
{% block footer %}
|
||||
<footer class="footer">
|
||||
<div class="footer__inner">
|
||||
{%- if config.extra.copyright_html %}
|
||||
<div class="copyright copyright--user">{{ config.extra.copyright_html | safe }}</div>
|
||||
{% else %}
|
||||
<div class="copyright">
|
||||
{%- if config.extra.author %}
|
||||
<span>© {{ date_macros::now_year() }} {{ config.extra.author }}</span>
|
||||
{% else %}
|
||||
<span>© {{ date_macros::now_year() }} Powered by <a href="https://www.getzola.org/">Zola</a></span>
|
||||
{% endif -%}
|
||||
|
||||
<span class="copyright-theme">
|
||||
<span class="copyright-theme-sep">:: </span>
|
||||
Theme: <a href="https://github.com/pawroman/zola-theme-terminimal/">Terminimal</a> by pawroman
|
||||
</span>
|
||||
</div>
|
||||
{% endif -%}
|
||||
</div>
|
||||
</footer>
|
||||
{% endblock footer %}
|
||||
|
||||
</div>
|
||||
{%- block extra_body %}
|
||||
{% endblock extra_body -%}
|
||||
</body>
|
||||
|
||||
</html>
|
3
themes/terminimal/templates/macros/date.html
Normal file
3
themes/terminimal/templates/macros/date.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% macro now_year() %}
|
||||
{{ now() | date(format="%Y") }}
|
||||
{% endmacro %}
|
94
themes/terminimal/templates/macros/head.html
Normal file
94
themes/terminimal/templates/macros/head.html
Normal file
|
@ -0,0 +1,94 @@
|
|||
{% import "macros/title.html" as title_macros -%}
|
||||
|
||||
{% macro head(config) %}
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<meta name="robots" content="noodp"/>
|
||||
|
||||
<link rel="stylesheet" href="{{ get_url(path="style.css", trailing_slash=false) | safe }}">
|
||||
|
||||
{%- if config.extra.accent_color %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="color/" ~ config.extra.accent_color ~ ".css", trailing_slash=false) | safe }}">
|
||||
{% else %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="color/blue.css", trailing_slash=false) | safe }}">
|
||||
{% endif -%}
|
||||
|
||||
{%- if config.extra.background_color %}
|
||||
{%- if config.extra.accent_color and config.extra.background_color != config.extra.accent_color %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="color/background_" ~ config.extra.background_color ~ ".css", trailing_slash=false) | safe }}">
|
||||
{% endif -%}
|
||||
{% endif -%}
|
||||
|
||||
{%- if config.extra.use_full_hack_font %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="font-hack.css", trailing_slash=false) | safe }}">
|
||||
{% else %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="font-hack-subset.css", trailing_slash=false) | safe }}">
|
||||
{% endif -%}
|
||||
|
||||
{% endmacro head %}
|
||||
|
||||
|
||||
{# Extra Meta tags for OpenGraph and Twitter cards #}
|
||||
{% macro open_graph(config) %}
|
||||
{%- if page %}
|
||||
{%- set permalink = page.permalink %}
|
||||
{%- set title = title_macros::title(page_title=page.title, main_title=config.title) %}
|
||||
{%- set description = page.description %}
|
||||
{%- set type = "article" %}
|
||||
{%- if page.extra and page.extra.og_image %}
|
||||
{%- if page.colocated_path %}
|
||||
{%- set og_image = page.path ~ page.extra.og_image %}
|
||||
{%- else %}
|
||||
{%- set og_image = page.extra.og_image %}
|
||||
{% endif %}
|
||||
{%- elif config.extra.default_og_image %}
|
||||
{%- set og_image = config.extra.default_og_image %}
|
||||
{%- endif %}
|
||||
{%- elif section %}
|
||||
{%- set permalink = section.permalink %}
|
||||
{%- set title = title_macros::title(page_title=section.title, main_title=config.title) %}
|
||||
{%- set description = section.description | default(value=config.description) %}
|
||||
{%- set type = "website" %}
|
||||
{%- if section.extra and section.extra.og_image %}
|
||||
{%- set og_image = section.extra.og_image %}
|
||||
{%- elif config.extra.default_og_image %}
|
||||
{%- set og_image = config.extra.default_og_image %}
|
||||
{%- endif %}
|
||||
{%- else %}
|
||||
{# For 404 and taxonomy pages #}
|
||||
{%- if taxonomy %}
|
||||
{% if term %}
|
||||
{%- set permalink = term.permalink %}
|
||||
{%- set title = title_macros::title(page_title=term.name, main_title=config.title) %}
|
||||
{%- set description = "All posts tagged " ~ term.name %}
|
||||
{% else %}
|
||||
{%- set permalink = config.base_url ~ "/" ~ taxonomy.slug %}
|
||||
{%- set title = title_macros::title(page_title=taxonomy.name, main_title=config.title) %}
|
||||
{%- set description = "All " ~ taxonomy.name %}
|
||||
{% endif %}
|
||||
{%- else %}
|
||||
{%- set permalink = config.base_url %}
|
||||
{%- set title = title_macros::title(page_title="404", main_title=config.title) %}
|
||||
{%- set description = "Page not found" %}
|
||||
{%- endif %}
|
||||
{%- set type = "website" %}
|
||||
{%- if config.extra.default_og_image %}
|
||||
{%- set og_image = config.extra.default_og_image %}
|
||||
{%- endif %}
|
||||
{%- endif -%}{# #}
|
||||
<meta name="description" content="{{ description | safe }}">
|
||||
|
||||
<meta property="og:description" content="{{ description | safe }}">
|
||||
<meta property="og:title" content="{{ title | safe }}">
|
||||
<meta property="og:type" content="{{ type }}">
|
||||
<meta property="og:url" content="{{ permalink | safe }}">
|
||||
{% if og_image %}
|
||||
<meta property="og:image" content="{{ get_url(path=og_image) }}">
|
||||
<meta name="twitter:image" content="{{ get_url(path=og_image) }}">
|
||||
{% endif %}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:description" content="{{ description | safe }}">
|
||||
<meta name="twitter:title" content="{{ title | safe }}">
|
||||
<meta property="twitter:domain" content="{{ config.base_url | replace(from="https://", to="") }}">
|
||||
<meta property="twitter:url" content="{{ permalink | safe }}">
|
||||
{% endmacro open_graph %}
|
52
themes/terminimal/templates/macros/menu.html
Normal file
52
themes/terminimal/templates/macros/menu.html
Normal file
|
@ -0,0 +1,52 @@
|
|||
{% macro menu(config, current_path) %}
|
||||
{%- set current_item = false -%}
|
||||
{%- if config.extra.menu_items %}
|
||||
{%- set menu_items = config.extra.menu_items -%}
|
||||
|
||||
{%- for item in menu_items %}
|
||||
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
|
||||
{%- set is_current = current_url == abs_item_url ~ "/"
|
||||
or current_url is starting_with(abs_item_url)
|
||||
-%}
|
||||
{%- set is_base = abs_item_url == config.base_url
|
||||
or abs_item_url == config.base_url ~ "/"
|
||||
-%}
|
||||
|
||||
{%- if is_base %}
|
||||
{%- set_global base_item = item -%}
|
||||
{% endif -%}
|
||||
|
||||
{%- if is_current and not is_base %}
|
||||
{%- set_global current_item = item -%}
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
|
||||
{%- if not current_item and base_item %}
|
||||
{# Did not match any menu URLs -- assume it's a blog post #}
|
||||
{%- set current_item = base_item -%}
|
||||
{% endif -%}
|
||||
|
||||
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
|
||||
{% endif -%}
|
||||
{% endmacro menu %}
|
||||
|
||||
{% macro menu_for(config, current_item) %}
|
||||
{%- if config.extra.menu_items %}
|
||||
{%- set menu_items = config.extra.menu_items -%}
|
||||
|
||||
<nav class="menu">
|
||||
<ul class="menu__inner">
|
||||
{%- for item in menu_items %}
|
||||
<li {%- if current_item and current_item == item %} class="active" {%- endif %}>
|
||||
{%- if item.newtab -%}
|
||||
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}" target="_blank" rel="noopener noreferrer">{{ item.name | safe }}</a>
|
||||
{%- else -%}
|
||||
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}">{{ item.name | safe }}</a>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{% endfor -%}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif -%}
|
||||
{% endmacro menu %}
|
||||
|
110
themes/terminimal/templates/macros/post.html
Normal file
110
themes/terminimal/templates/macros/post.html
Normal file
|
@ -0,0 +1,110 @@
|
|||
{% macro content(page, summary, show_only_description) %}
|
||||
{%- if show_only_description %}
|
||||
<div class="post-content">
|
||||
{{ page.description | safe }}
|
||||
</div>
|
||||
{% elif summary and page.summary %}
|
||||
<div class="post-content">
|
||||
{{ page.summary | safe }}
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="{{ page.permalink | safe }}">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
{% else %}
|
||||
{#- full content -#}
|
||||
<div class="post-content">
|
||||
{{ page.content | safe }}
|
||||
</div>
|
||||
{%- endif %}
|
||||
{% endmacro content %}
|
||||
|
||||
|
||||
{% macro date(page) %}
|
||||
<span class="post-date">
|
||||
{%- if page.date %}
|
||||
{{ page.date | date(format="%Y-%m-%d") }}
|
||||
{% endif -%}
|
||||
</span>
|
||||
{% endmacro post_date %}
|
||||
|
||||
|
||||
{% macro earlier_later(page) %}
|
||||
{%- if config.extra.enable_post_view_navigation %}
|
||||
{%- if page.lower or page.higher %}
|
||||
<div class="pagination">
|
||||
<div class="pagination__title">
|
||||
<span class="pagination__title-h">{{ config.extra.post_view_navigation_prompt }}</span>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="pagination__buttons">
|
||||
{%- if page.higher %}
|
||||
<span class="button previous">
|
||||
<a href="{{ page.higher.permalink | safe }}">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">{{ page.higher.title }}</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if page.lower %}
|
||||
<span class="button next">
|
||||
<a href="{{ page.lower.permalink | safe }}">
|
||||
<span class="button__text">{{ page.lower.title }}</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif -%}
|
||||
</div>
|
||||
</div>
|
||||
{% endif -%}
|
||||
{% endif -%}
|
||||
{% endmacro earlier_later %}
|
||||
|
||||
|
||||
{% macro header(page) %}
|
||||
<h1 class="post-title"><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
{{ post_macros::date(page=page) }}
|
||||
</div>
|
||||
|
||||
{{ post_macros::tags(page=page) }}
|
||||
{% endmacro header %}
|
||||
|
||||
|
||||
{% macro list_posts(pages) %}
|
||||
<ul>
|
||||
{%- for page in pages %}
|
||||
{%- if page.draft %}
|
||||
{% continue %}
|
||||
{% endif -%}
|
||||
<li class="post-list">
|
||||
<a href="{{ page.permalink | safe }}">
|
||||
<span class="post-date">{{ page.date }}</span>
|
||||
:: <span class="post-list-title">{{ page.title }}</span></a>
|
||||
{{ post_macros::tags(page=page, short=true) }}
|
||||
</li>
|
||||
{% endfor -%}
|
||||
</ul>
|
||||
{% endmacro list_posts %}
|
||||
|
||||
|
||||
{% macro tags(page, short=false) %}
|
||||
{%- if page.taxonomies and page.taxonomies.tags %}
|
||||
<span class="post-tags-inline">
|
||||
{%- if short %}
|
||||
::
|
||||
{%- set sep = "," -%}
|
||||
{% else %}
|
||||
:: tags:
|
||||
{%- set sep = " " -%}
|
||||
{% endif -%}
|
||||
{%- for tag in page.taxonomies.tags | sort | unique(case_sensitive=false) %}
|
||||
<a class="post-tag" href="{{ get_taxonomy_url(kind='tags', name=tag) | safe }}">#{{ tag }}</a>
|
||||
{%- if not loop.last %}{{ sep | safe }}{% endif -%}
|
||||
{% endfor -%}
|
||||
</span>
|
||||
{% endif -%}
|
||||
{% endmacro tags %}
|
17
themes/terminimal/templates/macros/title.html
Normal file
17
themes/terminimal/templates/macros/title.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
{% macro title(page_title, main_title) %}
|
||||
{%- if config.extra.page_titles and config.extra.page_titles == "combined" -%}
|
||||
{%- if page_title -%}
|
||||
{{ page_title }} | {{ main_title }}
|
||||
{%- else -%}
|
||||
{{ main_title }}
|
||||
{%- endif -%}
|
||||
{%- elif config.extra.page_titles and config.extra.page_titles == "page_only" -%}
|
||||
{%- if page_title -%}
|
||||
{{ page_title }}
|
||||
{%- else -%}
|
||||
{{ main_title }}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{{ main_title }}
|
||||
{%- endif -%}
|
||||
{% endmacro title %}
|
13
themes/terminimal/templates/page.html
Normal file
13
themes/terminimal/templates/page.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
{{ post_macros::header(page=page) }}
|
||||
{{ post_macros::content(page=page, summary=false, show_only_description=false) }}
|
||||
{{ post_macros::earlier_later(page=page) }}
|
||||
</div>
|
||||
{% endblock content %}
|
8
themes/terminimal/templates/shortcodes/figure.html
Normal file
8
themes/terminimal/templates/shortcodes/figure.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{% if src %}
|
||||
<figure class="{% if position %}{{ position }}{% else -%} center {%- endif %}" >
|
||||
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %}{% if style %} style="{{ style }}"{% endif %} decoding="async" loading="lazy"/>
|
||||
{% if caption %}
|
||||
<figcaption class="{% if caption_position %}{{ caption_position }}{% else -%} center {%- endif %}"{% if caption_style %} style="{{ caption_style | safe }}"{% endif %}>{{ caption | markdown() | safe }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
||||
{% endif %}
|
8
themes/terminimal/templates/shortcodes/image.html
Normal file
8
themes/terminimal/templates/shortcodes/image.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{% if src %}
|
||||
{# If the image's URL is internal to the site... #}
|
||||
{% if src is not starting_with("http") %}
|
||||
{# ... then prepend the site's base URL to the image's URL. #}
|
||||
{% set src = config.base_url ~ src %}
|
||||
{% endif %}
|
||||
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %} class="{% if position %}{{ position }}{% else -%} center {%- endif %}" {%- if style %} style="{{ style | safe }}" {%- endif %} decoding="async" loading="lazy"/>
|
||||
{% endif %}
|
21
themes/terminimal/templates/tags/list.html
Normal file
21
themes/terminimal/templates/tags/list.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ title_macros::title(page_title="Tags", main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">all tags</h1>
|
||||
|
||||
<ul>
|
||||
{% for term in terms %}
|
||||
<li class="tag-list">
|
||||
<a href="{{ term.permalink | safe }}">
|
||||
{{ term.name }} ({{ term.pages | length }} post{{ term.pages | length | pluralize }})
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock content %}
|
21
themes/terminimal/templates/tags/single.html
Normal file
21
themes/terminimal/templates/tags/single.html
Normal file
|
@ -0,0 +1,21 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{% set title = "Tag: " ~ term.name %}
|
||||
{{ title_macros::title(page_title=title, main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">
|
||||
tag: #{{ term.name }}
|
||||
({{ term.pages | length }} post{{ term.pages | length | pluralize }})
|
||||
</h1>
|
||||
|
||||
<a href="{{ config.base_url | safe }}/tags/">
|
||||
Show all tags
|
||||
</a>
|
||||
|
||||
{{ post_macros::list_posts(pages=term.pages) }}
|
||||
</div>
|
||||
{% endblock content %}
|
47
themes/terminimal/theme.toml
Normal file
47
themes/terminimal/theme.toml
Normal file
|
@ -0,0 +1,47 @@
|
|||
name = "terminimal"
|
||||
description = "A simple, minimal retro theme"
|
||||
license = "MIT"
|
||||
homepage = "https://github.com/pawroman/zola-theme-terminimal"
|
||||
min_version = "0.11.0"
|
||||
|
||||
# An optional live demo URL
|
||||
demo = "https://pawroman.github.io/zola-theme-terminimal/"
|
||||
|
||||
[author]
|
||||
name = "Paweł Romanowski"
|
||||
homepage = "https://github.com/pawroman"
|
||||
|
||||
# The original theme this one's been forked off.
|
||||
[original]
|
||||
author = "Radosław Kozieł"
|
||||
homepage = "https://radoslawkoziel.pl/"
|
||||
repo = "https://github.com/panr/hugo-theme-terminal"
|
||||
|
||||
[extra]
|
||||
|
||||
# One of: blue, green, orange, pink, red.
|
||||
# Defaults to blue.
|
||||
# Append -light for light themes, e.g. blue-light
|
||||
# Or append -auto, e.g. blue-auto
|
||||
accent_color = "blue"
|
||||
|
||||
# One of: blue, dark, green, orange, pink, red, light, auto
|
||||
# Enabling dark background will also modify primary font color to be darker.
|
||||
# Defaults to accent color (or, if not accent color specified, to blue).
|
||||
background_color = "blue"
|
||||
|
||||
# The logo text - defaults to 2 non-breaking spaces.
|
||||
logo_text = "Terminimal theme"
|
||||
|
||||
# Whether to show links to earlier and later posts
|
||||
# on each post page.
|
||||
enable_post_view_navigation = true
|
||||
|
||||
# The text shown at the bottom of a post,
|
||||
# before earlier/later post links.
|
||||
post_view_navigation_prompt = "Thanks for reading! Read other posts?"
|
||||
|
||||
# Use full Hack character set, not just a subset.
|
||||
# Switch this to true if you need full unicode support.
|
||||
# Defaults to false.
|
||||
use_full_hack_font = false
|
Loading…
Add table
Add a link
Reference in a new issue