diff --git a/assets/css/main.css b/assets/css/main.css index 7516cb1..666a287 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -1,2 +1,43 @@ -@import "tailwindcss"; +@import 'tailwindcss'; +@plugin "@tailwindcss/typography"; @source "hugo_stats.json"; + +@font-face { + font-family: 'Neonderthaw Regular'; + src: url('/fonts/Neonderthaw-Regular.ttf'); + unicode-range: + U+000D, U+0020-007E, U+00A0-0131, U+0134-0148, U+014A-017E, U+018F, U+0192, + U+01A0-01A1, U+01AF-01B0, U+01C4-01D6, U+01D9-01DC, U+01E6-01E7, + U+01EA-01EB, U+01FA-021B, U+022A-022D, U+0230-0233, U+0237, U+0259, + U+02B9-02BA, U+02BC, U+02C6-02C7, U+02D8-02DD, U+0300-0304, U+0306-030C, + U+030F, U+0311-0312, U+031B, U+0323-0324, U+0326-0328, U+032E, U+0331, + U+0335, U+1E80-1E85, U+1E9E, U+1EA0-1EF9, U+2010, U+2013-2014, U+2018-201A, + U+201C-201E, U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2044, + U+2052, U+2074, U+20A1, U+20A3-20A4, U+20A6-20A7, U+20A9, U+20AB-20AD, + U+20B1-20B2, U+20B5, U+20B9-20BA, U+20BC-20BD, U+2116, U+2122, U+2202, + U+220F, U+2211-2212, U+2215, U+2219-221A, U+221E, U+222B, U+2248, U+2260, + U+2264-2265, U+25CA, U+27E8-27E9, U+F8FF, U+FB01-FB02; +} + +@layer utilities { + .font-neon { + font-family: 'Neonderthaw Regular', serif; + } +} + +lauti-calendar-list::part(container) { + --lauti-primary-color: #ffffff; + --lauti-secondary-color:; + --lauti-header-bg:; + --lauti-header-color: #ffffff; + --lauti-day-color: var(--color-pink-200); + @apply shadow-xl/20; + @apply rounded-lg; +} +lauti-calendar-list::part(header) { + @apply py-6; +} +lauti-calendar-list::part(list) { + @apply md:max-h-90; + @apply overflow-scroll; +} diff --git a/assets/js/background-blur.js b/assets/js/background-blur.js new file mode 100644 index 0000000..004187a --- /dev/null +++ b/assets/js/background-blur.js @@ -0,0 +1,51 @@ +function setBackgroundBlur( + targetId, + scrollDivisor = 300, + disableBlur = false, + isMenuBlur = false, +) { + if (!targetId) { + console.error('data-blur-id is null'); + return; + } + const blurElement = document.getElementById(targetId); + if (!blurElement) return; + if (disableBlur) { + blurElement.setAttribute('aria-hidden', 'true'); + if (!isMenuBlur) { + blurElement.style.display = 'none'; + blurElement.style.opacity = '0'; + } else { + blurElement.style.display = ''; + } + } else { + blurElement.style.display = ''; + blurElement.removeAttribute('aria-hidden'); + } + const updateBlur = () => { + if (!disableBlur || isMenuBlur) { + const scroll = + window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop || + 0; + blurElement.style.opacity = scroll / scrollDivisor; + } + }; + blurElement.setAttribute('role', 'presentation'); + blurElement.setAttribute('tabindex', '-1'); + window.addEventListener('scroll', updateBlur); + updateBlur(); +} + +document.querySelectorAll('script[data-blur-id]').forEach((script) => { + const targetId = script.getAttribute('data-blur-id'); + const scrollDivisor = Number( + script.getAttribute('data-scroll-divisor') || 300, + ); + console.log('burring ', targetId); + const isMenuBlur = targetId === 'menu-blur'; + const settings = JSON.parse(localStorage.getItem('a11ySettings') || '{}'); + const disableBlur = settings.disableBlur || false; + setBackgroundBlur(targetId, scrollDivisor, disableBlur, isMenuBlur); +}); diff --git a/assets/js/registerLauti.js b/assets/js/registerLauti.js new file mode 100644 index 0000000..2ddbb61 --- /dev/null +++ b/assets/js/registerLauti.js @@ -0,0 +1,6 @@ +import { configureLautiComponents } from 'wc-lauti'; + +configureLautiComponents({ + instanceUrl: 'https://eintopf.info', + instanceName: 'eintopf.info', +}); diff --git a/content/_index.md b/content/_index.md index 2aa7881..3c9fb94 100644 --- a/content/_index.md +++ b/content/_index.md @@ -2,4 +2,13 @@ title: Stuttgart Bike Night subtitle: Donnerstags 19 Uhr location: Flora & Fauna +image: /images/bg-landing.jpg --- + +## Was ist die Stuttgarter Bike Night❓ + +Eine aufstrebende regelmäßige bunte Nachtausfahrt mit Party-Pace durch Stuttgarts Bezirke. +Wir wollen einen Groupride schaffen für Menschen, die sich in den sportlich fokussierten Radausfahrten vielleicht nicht ganz wohlfühlen 🤝💜 Eine 🚲 Fahrradausfahrt durch Stuttgart, bei der der Spaß am Radeln ganz oben steht 😄🙌. +Wir verstehen uns als inklusive Gruppe 🌍✨, die einen sicheren Ort ohne Diskriminierung schaffen möchte, an dem sich alle wohl und willkommen fühlen können! 🏳️‍🌈💫. +Also komm mit 👉🚲💡 und erkunde mit uns bunt leuchtend 🌈✨ die Stadtteile Stuttgarts 🏙️💛 +Wir fahren auf eigene Verantwortung ohne Anmeldung und sehen uns als kleine Gruppe, die aus Spaß fährt. diff --git a/content/impressum.md b/content/impressum.md new file mode 100644 index 0000000..38a8638 --- /dev/null +++ b/content/impressum.md @@ -0,0 +1,17 @@ +--- +title: Impressum +image: /images/halloween.jpg +--- + +**Angaben gemäß § 5 TMG:** + +Jasper Levin Spahl +Goppeltstr. 4D +70191 Stuttgart +Deutschland + +**Kontakt:** +E-Mail: [jasperspahl@web.de](mailto:jasperspahl@web.de) + +Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV: +Jasper Levin Spahl (Anschrift wie oben) diff --git a/data/footer.toml b/data/footer.toml new file mode 100644 index 0000000..173fd6c --- /dev/null +++ b/data/footer.toml @@ -0,0 +1,21 @@ +brand = "Stuttgart Bike Night" + +[[links]] +name = "Impressum" +url = "/impressum" + +[[links]] +name = "Instagram" +url = "https://instagram.com/stuttgartbikenight" + +[[links]] +name = "Mastodon" +url = "https://verkehrswende.social/@stuttgartbikenight" + +#[[links]] +#name = "Signal Gruppe" +#url = "https://signal.org" + +[[links]] +name = "eintopf.info" +url = "https://eintopf.info/gruppe/2e2994eb-ae45-4297-a2f6-9f7948da784c" diff --git a/layouts/_partials/footer.html b/layouts/_partials/footer.html index e69de29..9a60f73 100644 --- a/layouts/_partials/footer.html +++ b/layouts/_partials/footer.html @@ -0,0 +1,22 @@ + diff --git a/layouts/_partials/header.html b/layouts/_partials/header.html index 21ad117..9278082 100644 --- a/layouts/_partials/header.html +++ b/layouts/_partials/header.html @@ -2,15 +2,33 @@
+ {{ with resources.Get "js/background-blur.js" }} + {{ with . | minify | fingerprint "sha256" }} + + {{ end }} + {{ end }}
-
+{{ with .Params.Image | default "/images/bg-landing.jpg" }} +
+ +
+
+
+
+ {{ with resources.Get "js/background-blur.js" }} + {{ with . | minify | fingerprint "sha256" }} + + {{ end }} + {{ end }} +{{ end }} diff --git a/layouts/_shortcodes/br.html b/layouts/_shortcodes/br.html new file mode 100644 index 0000000..1915ec1 --- /dev/null +++ b/layouts/_shortcodes/br.html @@ -0,0 +1 @@ +
diff --git a/layouts/baseof.html b/layouts/baseof.html index 97cbfed..cec93b1 100644 --- a/layouts/baseof.html +++ b/layouts/baseof.html @@ -14,12 +14,28 @@ {{ partial "head.html" . }} + class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-black text-white"> {{ partial "header.html" . }} -
+
{{ block "main" . }} {{ end }}
{{ partial "footer.html" . }} + {{ with resources.Get "js/registerLauti.js" }} + {{$opts := dict + "minify" (not hugo.IsDevelopment) + "sourceMap" (cond hugo.IsDevelopment "external" "") + "targetPath" "js/main.js" + }} + {{ with . | js.Build $opts }} + {{ if hugo.IsDevelopment }} + + {{ else }} + {{ with . | fingerprint }} + + {{ end }} + {{ end }} + {{ end }} + {{ end }} diff --git a/layouts/home.html b/layouts/home.html index 5d024b8..1240007 100644 --- a/layouts/home.html +++ b/layouts/home.html @@ -1,3 +1,32 @@ {{ define "main" }} -

{{ .Title }}

+ +
+ + + + + + + + {{ .Title }} + + + + + + {{ .Params.Subtitle }} + + + {{ .Params.Location }} + + +
+ +
+
+ {{ .Content }} +
+ +
{{ end }} diff --git a/layouts/single.html b/layouts/single.html new file mode 100644 index 0000000..f890b1a --- /dev/null +++ b/layouts/single.html @@ -0,0 +1,6 @@ +{{ define "main" }} +
+

{{.Title}}

+ {{.Content}} +
+{{end}} diff --git a/package-lock.json b/package-lock.json index 014c21e..e88c270 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,6 +6,7 @@ "": { "devDependencies": { "@tailwindcss/cli": "^4.1.16", + "@tailwindcss/typography": "^0.5.19", "prettier": "3.6.2", "prettier-plugin-go-template": "^0.0.15", "prettier-plugin-toml": "^2.0.6", @@ -647,6 +648,19 @@ "node": ">= 10" } }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz", + "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, "node_modules/@taplo/core": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@taplo/core/-/core-0.2.0.tgz", @@ -677,6 +691,19 @@ "node": ">=8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -1099,6 +1126,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/prettier": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", @@ -1166,7 +1207,8 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.16.tgz", "integrity": "sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tapable": { "version": "2.3.0", @@ -1204,6 +1246,13 @@ "bin": { "ulid": "bin/cli.js" } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" } } } diff --git a/package.json b/package.json index 4bacd59..ae4c0cd 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,11 @@ { "devDependencies": { "@tailwindcss/cli": "^4.1.16", + "@tailwindcss/typography": "^0.5.19", "prettier": "3.6.2", "prettier-plugin-go-template": "^0.0.15", "prettier-plugin-toml": "^2.0.6", - "tailwindcss": "^4.1.16" + "tailwindcss": "^4.1.16", + "wc-lauti": "^1.0.0" } } diff --git a/static/fonts/Neonderthaw-Regular.ttf b/static/fonts/Neonderthaw-Regular.ttf new file mode 100644 index 0000000..2eb74be Binary files /dev/null and b/static/fonts/Neonderthaw-Regular.ttf differ diff --git a/static/images/bg-landing.jpg b/static/images/bg-landing.jpg new file mode 100644 index 0000000..88f4a5d Binary files /dev/null and b/static/images/bg-landing.jpg differ diff --git a/static/images/halloween.jpg b/static/images/halloween.jpg new file mode 100644 index 0000000..0b19111 Binary files /dev/null and b/static/images/halloween.jpg differ