feat: completely reworked structure with nostyleplease theme
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
public/
|
||||||
|
.hugo_build.lock
|
||||||
|
/resources/_gen
|
35
contact.html
@ -1,35 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta name="description" content="Experimental privacy-centric project that aims to provide a random selection of open-source services free of charge">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="style-min.css">
|
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/assets/favicon-96x96.png" sizes="96x96" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/assets/favicon.svg" />
|
|
||||||
<link rel="shortcut icon" href="/assets/favicon.ico" />
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png" />
|
|
||||||
<meta name="apple-mobile-web-app-title" content="Umbrella" />
|
|
||||||
<link rel="manifest" href="/assets/webmanifest.json" />
|
|
||||||
|
|
||||||
<title>Umbrella - Contact</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="page">
|
|
||||||
<h1>Umbrella. <a href="/">home</a> <a href="/contact">contact</a></h1>
|
|
||||||
|
|
||||||
<p>Umbrella.haus is an experimental, privacy-centric project that aims to provide a curated selection of open-source services free of charge.</p>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<h2>Contact</h2>
|
|
||||||
<ul>
|
|
||||||
<li>Signal: <code>xmr.02</code></li>
|
|
||||||
<li>Email: <code>ben (at) uq.ci</code></li>
|
|
||||||
<li>PGP: <a href="https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x1530f5132a1228578d2b4168995efd5c1b532b3e"><code>1530 F513 2A12 2857 8D2B 4168 995E FD5C 1B53 2B3E</code></a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
5
content/_index.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: ""
|
||||||
|
date: 2025-02-16T16:36:41+02:00
|
||||||
|
draft: false
|
||||||
|
---
|
19
hugo.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
baseURL: https://umbrella.haus
|
||||||
|
title: Umbrella
|
||||||
|
language: en-GB
|
||||||
|
|
||||||
|
theme: nostyleplease
|
||||||
|
|
||||||
|
params:
|
||||||
|
theme_config:
|
||||||
|
appearance: dark
|
||||||
|
back_home_text: <<
|
||||||
|
date_format: 2006-01-02
|
||||||
|
isListGroupByDate: false
|
||||||
|
|
||||||
|
assets:
|
||||||
|
favicon: /images/favicon.ico
|
||||||
|
faviconsvg: /images/favicon.svg
|
||||||
|
favicon96: /images/favicon-96x96.png
|
||||||
|
appleTouchIcon: /images/apple-touch-icon.png
|
||||||
|
manifest: /manifest.json
|
56
index.html
@ -1,56 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta name="description" content="Experimental privacy-centric project that aims to provide a random selection of open-source services free of charge">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="style-min.css">
|
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="/assets/favicon-96x96.png" sizes="96x96" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/assets/favicon.svg" />
|
|
||||||
<link rel="shortcut icon" href="/assets/favicon.ico" />
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png" />
|
|
||||||
<meta name="apple-mobile-web-app-title" content="Umbrella" />
|
|
||||||
<link rel="manifest" href="/assets/webmanifest.json" />
|
|
||||||
|
|
||||||
<title>Umbrella</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="page">
|
|
||||||
<h1>Umbrella. <a href="/">home</a> <a href="/contact">contact</a></h1>
|
|
||||||
|
|
||||||
<p>Umbrella.haus is an experimental, privacy-centric project that aims to provide a curated selection of open-source services free of charge.</p>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<h2>Services</h2>
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://git.umbrella.haus">Gitea</a>: Forge software package for hosting software version control using Git.</li>
|
|
||||||
<li><a href="https://4.umbrella.haus">4get</a>: Proxy search engine that doesn't suck. Features a JavaScript-free interface and supports searching for websites, images, videos, news, and music.</li>
|
|
||||||
<li><a href="https://ip.umbrella.haus">EchoIP</a>: Simple IP address lookup service with support for ASN, country, and city lookups powered by the MaxMind GeoIP database.</li>
|
|
||||||
<li><a href="https://speed.umbrella.haus">LibreSpeed</a>: Extremely lightweight speedtest implemented in JavaScript (telemetry disabled). Utilizes XMLHttpRequest and Web Workers.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<h2>Tor Relays</h2>
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://metrics.torproject.org/rs.html#details/15CD2C302869242498AFEB2369C0E95882DFCB6A">Caspian</a> <code>15CD 2C30 2869 2424 98AF EB23 69C0 E958 82DF CB6A</code></li>
|
|
||||||
<li><a href="https://metrics.torproject.org/rs.html#details/625CC20FF07AF5853EE4A11F9F0ADB023A229A24">Sargasso</a> <code>625C C20F F07A F585 3EE4 A11F 9F0A DB02 3A22 9A24</code></li>
|
|
||||||
<li><a href="https://metrics.torproject.org/rs.html#details/DF6B339CF595EE2E23CAEDD61F2C51030236C5CE">Vostok</a> <code>DF6B 339C F595 EE2E 23CA EDD6 1F2C 5103 0236 C5CE</code></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="section">
|
|
||||||
<h2>Under Construction 🏗️</h2>
|
|
||||||
<ul>
|
|
||||||
<li>New services:</li>
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://codeberg.org/aryak/mozhi">Mozhi</a>: Frontend for multiple translation engines</li>
|
|
||||||
<li><a href="https://github.com/PrivateBin/PrivateBin">PrivateBin</a>: Zero-knowledge pastebin</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
19
static/contact.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
|
Hash: SHA512
|
||||||
|
|
||||||
|
Clearweb: golfed.xyz, umbrella.haus
|
||||||
|
Onion: golfed6fzytoktol4de4o4nerap3xuykhfm5makfzscib65df3khnpyd.onion
|
||||||
|
PGP: 1530F5132A1228578D2B4168995EFD5C1B532B3E
|
||||||
|
Email: hello@golfed.xyz
|
||||||
|
Matrix: @ae:golfed.xyz
|
||||||
|
Signal: @xmr.02
|
||||||
|
|
||||||
|
Updated: 29/11/2024
|
||||||
|
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iHUEARYKAB0WIQQVMPUTKhIoV40rQWiZXv1cG1MrPgUCZ0mHzQAKCRCZXv1cG1Mr
|
||||||
|
Pl6yAQCjFkLnaCH9f3BQgAsCwpmjmxQzcOsVoptf4eB08ZJNbAD/RH2Suz1CJSWe
|
||||||
|
LTusruFyxPEbzDsT+jNvebZRY91A5gQ=
|
||||||
|
=UfKa
|
||||||
|
-----END PGP SIGNATURE-----
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 197 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 299 KiB After Width: | Height: | Size: 299 KiB |
1
style-min.css
vendored
@ -1 +0,0 @@
|
|||||||
@font-face {font-family: 'Inter';font-style: normal;font-weight: 400;font-display: auto;src: url("/assets/fonts/Inter400-Latin.woff2") format("woff2");}@font-face {font-family: 'Inter';font-style: normal;font-weight: 500;font-display: auto;src: url("/assets/fonts/Inter500-Latin.woff2") format("woff2");}:root {font-family: "Inter", sans-serif;}body {background-color: #202124;color: #ccc;margin: 0;}.page {max-width: 800px;margin: auto;padding: 20px 40px;}.section {background-color: rgba(255, 255, 255, 0.05);margin-bottom: 20px;border-left: 4px solid #5e81ac;}.section h2 {font-size: 18px;font-weight: 600;color: #fff;padding: 8px 16px;margin: 0;background-color: transparent;border-left: none;}p {background-color: #49688e;padding: 16px 32px;color: #fff;text-align: center;}p > a {color: #fff;font-weight: 600 }h1 {font-size: 42px;color: #eee;font-weight: 600;margin-bottom: 8px;line-height: 32px;}h1 > a {font-size: 22px;color: #aaa }ul {padding: 8px 32px 16px;margin: 0;}li {font-size: 16px;font-weight: 400;margin-bottom: 8px;color: #ccc;}li > a {color: #5e81ac;font-weight: 600;}code {background-color: rgba(94, 129, 172, 0.2);color: #5e81ac;padding: 1px 6px;border-radius: 4px;font-family: "Courier New", monospace;}footer {text-align: center;padding: 20px;font-style: italic;}footer a {color: #ccc;}a {color: #5e81ac;text-decoration: none;transition: color 0.3s ease;}a:hover {color: #81a1c1;text-decoration: underline;}
|
|
117
style.css
@ -1,117 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: 'Inter';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: auto;
|
|
||||||
src: url("/assets/fonts/Inter400-Latin.woff2") format("woff2");
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Inter';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 500;
|
|
||||||
font-display: auto;
|
|
||||||
src: url("/assets/fonts/Inter500-Latin.woff2") format("woff2");
|
|
||||||
}
|
|
||||||
|
|
||||||
:root {
|
|
||||||
font-family: "Inter", sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #202124;
|
|
||||||
color: #ccc;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page {
|
|
||||||
max-width: 800px;
|
|
||||||
margin: auto;
|
|
||||||
padding: 20px 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section {
|
|
||||||
background-color: rgba(255, 255, 255, 0.05);
|
|
||||||
margin-bottom: 20px;
|
|
||||||
border-left: 4px solid #5e81ac;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section h2 {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #fff;
|
|
||||||
padding: 8px 16px;
|
|
||||||
margin: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
background-color: #49688e;
|
|
||||||
padding: 16px 32px;
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
p > a {
|
|
||||||
color: #fff;
|
|
||||||
font-weight: 600
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 42px;
|
|
||||||
color: #eee;
|
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
line-height: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 > a {
|
|
||||||
font-size: 22px;
|
|
||||||
color: #aaa
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
padding: 8px 32px 16px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 400;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
li > a {
|
|
||||||
color: #5e81ac;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
background-color: rgba(94, 129, 172, 0.2);
|
|
||||||
color: #5e81ac;
|
|
||||||
padding: 1px 6px;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-family: "Courier New", monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
text-align: center;
|
|
||||||
padding: 20px;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #5e81ac;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: color 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: #81a1c1;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
185
themes/nostyleplease/assets/css/main.scss
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
// -------------- THEME SWITCHER -------------- //
|
||||||
|
@mixin theme($--bg-color, $--primary-text-color, $--secondary-text-color, $--link-color, $--visited-link-color, $--highlight) {
|
||||||
|
background-color: $--bg-color;
|
||||||
|
|
||||||
|
color: $--primary-text-color;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $--link-color;
|
||||||
|
&:visited { color: $--visited-link-color; }
|
||||||
|
}
|
||||||
|
|
||||||
|
details {
|
||||||
|
border: thin solid $--primary-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
details summary {
|
||||||
|
color: $--primary-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open] summary {
|
||||||
|
border-bottom: 1px solid $--primary-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background: $--bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
code:not(pre > code) {
|
||||||
|
background-color: $--primary-text-color;
|
||||||
|
color: $--bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
*:target {
|
||||||
|
background: $--highlight;
|
||||||
|
color: $--primary-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
table, th, td {
|
||||||
|
border: thin solid $--primary-text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc {
|
||||||
|
border: thin solid $--primary-text-color;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption { color: $--secondary-text-color; }
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border: thin solid $--primary-text-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin dark-appearance {
|
||||||
|
@include theme(#000300, #eff6ee, #000300, #33658a, #55dde0, #9197ae); // modus-vivendi
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin light-appearance {
|
||||||
|
@include theme(#ffffff, #000000, #595959, #3548cf, #8f0075, #dae5ec); // modus-operandi
|
||||||
|
}
|
||||||
|
|
||||||
|
body[a="dark"] { @include dark-appearance; }
|
||||||
|
body[a="light"] { @include light-appearance; }
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
body[a="auto"] { @include dark-appearance; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: light) {
|
||||||
|
body[a="auto"] { @include light-appearance; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
html { height: 100%; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.4;
|
||||||
|
margin: 0;
|
||||||
|
min-height: 100%;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2, h3, h4, h5, h6 { margin-top: 1.5rem; }
|
||||||
|
|
||||||
|
p { margin: 1rem 0; }
|
||||||
|
|
||||||
|
li { margin: 0.4rem 0; }
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
&:hover { text-decoration: underline; }
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
text-align: center;
|
||||||
|
border: 0;
|
||||||
|
margin: 2rem 0;
|
||||||
|
|
||||||
|
&:before { content: '/////' }
|
||||||
|
&:after { content: attr(data-content) '/////' }
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 1em;
|
||||||
|
overflow-x: auto; /* Fix pre content overflowing parent without scroll bar */
|
||||||
|
}
|
||||||
|
|
||||||
|
table { width: 100%; }
|
||||||
|
|
||||||
|
table, th, td {
|
||||||
|
border-collapse: collapse;
|
||||||
|
padding: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
text-size-adjust: 100%;
|
||||||
|
-ms-text-size-adjust: 100%;
|
||||||
|
-moz-text-size-adjust: 100%;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
code:not(pre > code) {
|
||||||
|
padding: 0.1em 0.2em;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
code.has-jax {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
background: inherit !important;
|
||||||
|
border: none !important;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
padding: 1rem;
|
||||||
|
|
||||||
|
p { margin: 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
text-align: center;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
details {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
details summary {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open] summary {
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-meta {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w {
|
||||||
|
max-width: 640px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 4rem 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-footer {
|
||||||
|
margin-top: 2em;
|
||||||
|
}
|
25
themes/nostyleplease/data/menu.toml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[[entries]]
|
||||||
|
title = "services"
|
||||||
|
entries = [
|
||||||
|
{ title = "4get (proxy search engine)", url = "https://4.umbrella.haus/" },
|
||||||
|
{ title = "gitea (git hosting)", url = "https://git.umbrella.haus/" },
|
||||||
|
{ title = "echoip (ip lookup)", url = "https://ip.umbrella.haus/" },
|
||||||
|
{ title = "librespeed (speedtest)", url = "https://speed.umbrella.haus/" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[entries]]
|
||||||
|
title = "tor relays"
|
||||||
|
entries = [
|
||||||
|
{ title = "caspian (15CD2C...DFCB6A)", url = "https://metrics.torproject.org/rs.html#details/15CD2C302869242498AFEB2369C0E95882DFCB6A" },
|
||||||
|
{ title = "sargasso (625CC2...229A24)", url = "https://metrics.torproject.org/rs.html#details/625CC20FF07AF5853EE4A11F9F0ADB023A229A24" },
|
||||||
|
{ title = "vostok (DF6B33...36C5CE)", url = "https://metrics.torproject.org/rs.html#details/DF6B339CF595EE2E23CAEDD61F2C51030236C5CE" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[entries]]
|
||||||
|
title = "contacts"
|
||||||
|
entries = [
|
||||||
|
{ title = "email (hello at golfed.xyz)", url = "mailto:hello@golfed.xyz" },
|
||||||
|
{ title = "pgp (1530F5...532B3E)", url = "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x1530f5132a1228578d2b4168995efd5c1b532b3e" },
|
||||||
|
{ title = "matrix (@ae:golfed.xyz)", url = "https://matrix.to/#/@ae:golfed.xyz" },
|
||||||
|
{ title = "signal (xmr.02)", url = "https://signal.me/#eu/9aAt0tk36ErVZygWxf_dk81_r_2jTaxUxVCuvl_h6LONUyREI7hLm42Oa8RYJgoz" },
|
||||||
|
]
|
8
themes/nostyleplease/layouts/404.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
{{- partial "back_link.html" . -}}
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>404 Not Found</h1>
|
||||||
|
</header>
|
||||||
|
{{ end }}
|
12
themes/nostyleplease/layouts/_default/baseof.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ $.Site.LanguageCode }}">
|
||||||
|
{{- partial "head.html" . -}}
|
||||||
|
<body a="{{ $.Site.Params.theme_config.appearance | default "auto" }}">
|
||||||
|
<main class="page-content" aria-label="Content">
|
||||||
|
<div class="w">
|
||||||
|
{{- block "main" . }}{{- end }}
|
||||||
|
{{ partial "footer.html" }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
8
themes/nostyleplease/layouts/_default/list.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "back_link.html" .}}
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
{{ partial "post_list.html" (dict "context" . "section" .Section)}}
|
||||||
|
{{ end }}
|
21
themes/nostyleplease/layouts/_default/single.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "back_link.html" .}}
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<p class="post-meta">
|
||||||
|
<time datetime="{{ .Date }}">
|
||||||
|
{{ .Date | time.Format site.Params.theme_config.date_format }}
|
||||||
|
</time>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ if .Params.toc }}
|
||||||
|
<aside {{ if .Params.tocBorder }} class="toc" {{ end }}>
|
||||||
|
{{ .TableOfContents }}
|
||||||
|
</aside>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
8
themes/nostyleplease/layouts/_default/taxonomy.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "back_link.html" .}}
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
{{ partial "post_list.html" (dict "context" .)}}
|
||||||
|
{{ end }}
|
8
themes/nostyleplease/layouts/_default/term.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "back_link.html" .}}
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
{{ partial "post_list.html" (dict "context" .)}}
|
||||||
|
{{ end }}
|
12
themes/nostyleplease/layouts/index.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>{{ $.Site.Title }}</h1>
|
||||||
|
{{- if $.Site.Params.theme_config.show_description -}}
|
||||||
|
<p>{{ $.Site.Params.description }}</p>
|
||||||
|
{{- end -}}
|
||||||
|
</header>
|
||||||
|
{{ .Content }}
|
||||||
|
{{ partial "menu_item.html" (dict "context" . "collection" $.Site.Data.menu.entries) }}
|
||||||
|
|
||||||
|
{{ end }}
|
1
themes/nostyleplease/layouts/partials/back_link.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<a href="{{ "" | relURL }}">{{ $.Site.Params.theme_config.back_home_text }}</a>
|
3
themes/nostyleplease/layouts/partials/footer.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<footer class="site-footer">
|
||||||
|
<p>{{ now.Format "2006" }} / <a href="/contact.txt" target="_blank" rel="noopener noreferrer">contact.txt</a> / <a href="https://golfed.xyz" target="_blank" rel="noopener noreferrer">golfed.xyz</a></p>
|
||||||
|
</footer>
|
28
themes/nostyleplease/layouts/partials/head.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
{{ if .IsPage }} <meta name="description" content="{{ .Summary }}"> {{ end }}
|
||||||
|
|
||||||
|
<title>
|
||||||
|
{{ if not .IsHome }}
|
||||||
|
{{ .Title }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $.Site.Title }}
|
||||||
|
{{ end }}
|
||||||
|
</title>
|
||||||
|
|
||||||
|
<link rel="shortcut icon" type="image/x-icon" href="{{ $.Site.Params.favicon | relURL }}" />
|
||||||
|
{{ $options := (dict "outputStyle" "compressed" "enableSourceMap" (not hugo.IsProduction)) }}
|
||||||
|
{{ $sass := resources.Get "css/main.scss" }}
|
||||||
|
{{ $style := $sass | css.Sass $options | resources.Fingerprint "sha512" }}
|
||||||
|
<link rel="stylesheet" href="{{ $style.Permalink | relURL }}" integrity="{{ $style.Data.Integrity }}" />
|
||||||
|
{{ if .Params.mathjax }} {{ partial "mathjax.html" . }} {{ end }}
|
||||||
|
|
||||||
|
<!-- Custom icons -->
|
||||||
|
<link rel="icon" type="image/png" href="{{ site.Params.assets.favicon96 | default "favicon-96x96.png" | absURL }}" sizes="96x96" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="{{ site.Params.assets.faviconsvg | default "favicon.svg" | absURL }}" />
|
||||||
|
<link rel="shortcut icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ site.Params.assets.appleTouchIcon | default "apple-touch-icon.png" | absURL }}" />
|
||||||
|
<link rel="manifest" href="{{ site.Params.assets.manifest | default "manifest.json" | absURL }}" />
|
||||||
|
</head>
|
21
themes/nostyleplease/layouts/partials/mathjax.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<script>
|
||||||
|
MathJax = {
|
||||||
|
tex: {
|
||||||
|
inlineMath: [['$', '$'], ['\\(', '\\)']],
|
||||||
|
displayMath: [['$$','$$'], ['\\[', '\\]']],
|
||||||
|
processEscapes: true,
|
||||||
|
processEnvironments: true
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre']
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('load', (event) => {
|
||||||
|
document.querySelectorAll("mjx-container").forEach(function(x){
|
||||||
|
x.parentElement.classList += 'has-jax'})
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
||||||
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
19
themes/nostyleplease/layouts/partials/menu_item.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<ul>
|
||||||
|
{{- range $item := .collection -}}
|
||||||
|
<li>
|
||||||
|
{{- with $item.url -}}
|
||||||
|
<a href="{{ $item.url | relURL }}">{{ safeHTML $item.title }}</a>
|
||||||
|
{{- else -}}
|
||||||
|
{{ safeHTML $item.title }}
|
||||||
|
{{- end -}}
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{{- if $item.entries }}
|
||||||
|
{{ partial "menu_item.html" (dict "context" . "collection" $item.entries) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if $item.post_list -}}
|
||||||
|
{{ partial "post_list.html" (dict "context" . "section" $item.post_list.section "limit" $item.post_list.limit "show_more" $item.post_list.show_more "show_more_text" $item.post_list.show_more_text "show_more_url" $item.post_list.show_more_url) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
</ul>
|
39
themes/nostyleplease/layouts/partials/post_list.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{{- $posts := "" -}}
|
||||||
|
|
||||||
|
{{- if .section -}}
|
||||||
|
{{- $posts = (where site.RegularPages "Section" .section) -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- if (eq .context.Kind "taxonomy") -}}
|
||||||
|
{{- $posts = .context.Pages -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- if (eq .context.Kind "term") -}}
|
||||||
|
{{- $posts = .context.Data.Pages -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $posts = site.RegularPages }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $limit_exceeded:= "" -}}
|
||||||
|
{{- if (and .limit (gt (len $posts) .limit)) -}}
|
||||||
|
{{- $limit_exceeded = true -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $limit_exceeded = false -}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- if (gt (len $posts) 0) }}
|
||||||
|
{{- if .limit }}
|
||||||
|
{{ $posts = (first .limit $posts ) }}
|
||||||
|
{{ end }}
|
||||||
|
<ul>
|
||||||
|
{{- range $post := $posts -}}
|
||||||
|
<li>
|
||||||
|
<span>{{- ($post.Date | time.Format site.Params.theme_config.date_format) }}</span>
|
||||||
|
<a href="{{ $post.Permalink | relURL }}">{{ $post.Title }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{- if and .show_more $limit_exceeded }}
|
||||||
|
<li><a href="{{ .show_more_url | relURL }}">{{ .show_more_text | default "Show more..." }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
20
themes/nostyleplease/layouts/posts/baseof.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ $.Site.LanguageCode }}">
|
||||||
|
{{- partial "head.html" . -}}
|
||||||
|
<body a="{{ $.Site.Params.theme_config.appearance | default "auto" }}">
|
||||||
|
<main class="page-content" aria-label="Content">
|
||||||
|
<div class="w">
|
||||||
|
<div class="post-meta">
|
||||||
|
{{ partial "back_link.html" .}}
|
||||||
|
<p>
|
||||||
|
<time datetime="{{ .Date }}">
|
||||||
|
{{ .Date | time.Format site.Params.theme_config.date_format }}
|
||||||
|
</time>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{{- block "main" . }}{{- end }}
|
||||||
|
{{ partial "footer.html" }}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
21
themes/nostyleplease/layouts/posts/list.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
<!-- divide post list by year -->
|
||||||
|
{{ if .Site.Params.theme_config.isListGroupByDate }}
|
||||||
|
{{ range .Pages.GroupByDate "2006 Year" }}
|
||||||
|
<p>{{ .Key }}</p>
|
||||||
|
<ul>
|
||||||
|
{{ range .Pages }}
|
||||||
|
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "post_list.html" (dict "context" . "section" .Section)}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ end }}
|
14
themes/nostyleplease/layouts/posts/single.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ if .Params.toc }}
|
||||||
|
<aside {{ if .Params.tocBorder }} class="toc" {{ end }}>
|
||||||
|
{{ .TableOfContents }}
|
||||||
|
</aside>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
6
themes/nostyleplease/layouts/shortcodes/details.html
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<details {{ if eq (.Get "open" | default "false") "true" }}open{{ end }}>
|
||||||
|
<summary>
|
||||||
|
{{ .Get "summary" | default "Details:" }}
|
||||||
|
</summary>
|
||||||
|
{{ .Inner | markdownify }}
|
||||||
|
</details>
|
3
themes/nostyleplease/layouts/shortcodes/texd.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<span>
|
||||||
|
$${{ .Get 0 }}$$
|
||||||
|
</span>
|
3
themes/nostyleplease/layouts/shortcodes/texi.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<span>
|
||||||
|
\({{ .Get 0 }}\)
|
||||||
|
</span>
|
21
themes/nostyleplease/theme.toml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# theme.toml template for a Hugo theme
|
||||||
|
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
||||||
|
|
||||||
|
name = "no-style-please"
|
||||||
|
license = "MIT"
|
||||||
|
licenselink = "https://github.com/Masellum/hugo-theme-nostyleplease/blob/main/LICENSE"
|
||||||
|
description = "a (nearly) no-CSS, fast, minimalist Hugo theme ported from riggraz/no-style-please."
|
||||||
|
homepage = "https://github.com/Masellum/hugo-theme-nostyleplease"
|
||||||
|
tags = ["blog", "minimalist"]
|
||||||
|
features = []
|
||||||
|
min_version = "0.41.0"
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "Masellum"
|
||||||
|
homepage = "Masellum.github.io"
|
||||||
|
|
||||||
|
# If porting an existing theme
|
||||||
|
[original]
|
||||||
|
name = "riggraz"
|
||||||
|
homepage = "https://riggraz.dev/"
|
||||||
|
repo = "https://github.com/riggraz/no-style-please"
|