diff --git a/package.json b/package.json index d596b55..a1e7cb3 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,12 @@ "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4.3.3", "astro": "^7.3.5", + "plaiceholder": "^3.0.0", + "sharp": "^0.35.5", "tailwindcss": "^4.3.3" }, "devDependencies": { + "@types/node": "^26.6.4", "daisyui": "^5.7.46" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 467250a..d63e65a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,20 +10,29 @@ importers: dependencies: '@lucide/astro': specifier: ^1.48.0 - version: 1.48.0(astro@7.3.5(jiti@2.7.0)) + version: 1.48.0(astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0)) '@tailwindcss/typography': specifier: ^0.5.20 version: 0.5.20(tailwindcss@4.3.3) '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0)) + version: 4.3.3(vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)) astro: specifier: ^7.3.5 - version: 7.3.5(jiti@2.7.0) + version: 7.3.5(@types/node@26.6.4)(jiti@2.7.0) + plaiceholder: + specifier: ^3.0.0 + version: 3.0.0(sharp@0.35.5(@types/node@26.6.4)) + sharp: + specifier: ^0.35.5 + version: 0.35.5(@types/node@26.6.4) tailwindcss: specifier: ^4.3.3 version: 4.3.3 devDependencies: + '@types/node': + specifier: ^26.6.4 + version: 26.6.4 daisyui: specifier: ^5.7.46 version: 5.7.46 @@ -810,6 +819,9 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + '@types/node@26.6.4': + resolution: {integrity: sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -1331,6 +1343,11 @@ packages: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} + plaiceholder@3.0.0: + resolution: {integrity: sha512-jwHxxHPnr1BwRzPCeZgEK2BMsEy2327sWynw3qb6XC/oGgGDUTPtR8pFxFQmNArhMBwhkUbUr5OPhhIJpCa8eQ==} + peerDependencies: + sharp: '>= 0.30.6' + postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} @@ -1464,6 +1481,9 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} + undici@8.11.2: resolution: {integrity: sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==} engines: {node: '>=22.19.0'} @@ -1884,8 +1904,7 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true - '@img/colour@1.1.0': - optional: true + '@img/colour@1.1.0': {} '@img/sharp-darwin-arm64@0.35.5': optionalDependencies: @@ -2010,9 +2029,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@lucide/astro@1.48.0(astro@7.3.5(jiti@2.7.0))': + '@lucide/astro@1.48.0(astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0))': dependencies: - astro: 7.3.5(jiti@2.7.0) + astro: 7.3.5(@types/node@26.6.4)(jiti@2.7.0) '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: @@ -2185,12 +2204,12 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0))': + '@tailwindcss/vite@4.3.3(vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.3.1(esbuild@0.28.2)(jiti@2.7.0) + vite: 8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0) '@tybys/wasm-util@0.10.4': dependencies: @@ -2215,6 +2234,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/node@26.6.4': + dependencies: + undici-types: 8.9.0 + '@types/unist@3.0.3': {} '@ungap/structured-clone@1.4.0': {} @@ -2232,7 +2255,7 @@ snapshots: aria-query@5.3.2: {} - astro@7.3.5(jiti@2.7.0): + astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0): dependencies: '@astrojs/compiler-rs': 0.5.1 '@astrojs/internal-helpers': 0.11.0 @@ -2282,13 +2305,13 @@ snapshots: unifont: 0.7.5 unstorage: 1.17.5 verkit: 0.4.1 - vite: 8.3.1(esbuild@0.28.2)(jiti@2.7.0) - vitefu: 1.1.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0)) + vite: 8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0) + vitefu: 1.1.3(vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.6.5 optionalDependencies: - sharp: 0.35.5 + sharp: 0.35.5(@types/node@26.6.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -2754,6 +2777,10 @@ snapshots: picomatch@4.0.7: {} + plaiceholder@3.0.0(sharp@0.35.5(@types/node@26.6.4)): + dependencies: + sharp: 0.35.5(@types/node@26.6.4) + postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 @@ -2833,10 +2860,9 @@ snapshots: sax@1.6.1: {} - semver@7.8.5: - optional: true + semver@7.8.5: {} - sharp@0.35.5: + sharp@0.35.5(@types/node@26.6.4): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -2867,7 +2893,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.5 '@img/sharp-win32-ia32': 0.35.5 '@img/sharp-win32-x64': 0.35.5 - optional: true + '@types/node': 26.6.4 shiki@4.4.3: dependencies: @@ -2931,6 +2957,8 @@ snapshots: uncrypto@0.1.3: {} + undici-types@8.9.0: {} + undici@8.11.2: {} unified@11.0.5: @@ -2997,7 +3025,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0): + vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -3005,13 +3033,14 @@ snapshots: rolldown: 1.2.11 tinyglobby: 0.2.17 optionalDependencies: + '@types/node': 26.6.4 esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 - vitefu@1.1.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0)): + vitefu@1.1.3(vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)): optionalDependencies: - vite: 8.3.1(esbuild@0.28.2)(jiti@2.7.0) + vite: 8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0) xxhash-wasm@1.1.0: {} diff --git a/public/annaelbe.svg b/public/hamburg/2026/annaelbe.svg similarity index 99% rename from public/annaelbe.svg rename to public/hamburg/2026/annaelbe.svg index 1cc7d6b..507e2e2 100644 --- a/public/annaelbe.svg +++ b/public/hamburg/2026/annaelbe.svg @@ -1,685 +1,685 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/public/bezahlkarte.png b/public/hamburg/2026/bezahlkarte.png similarity index 100% rename from public/bezahlkarte.png rename to public/hamburg/2026/bezahlkarte.png diff --git a/public/ccchh.svg b/public/hamburg/2026/ccchh.svg similarity index 100% rename from public/ccchh.svg rename to public/hamburg/2026/ccchh.svg diff --git a/public/citydataexplosion.svg b/public/hamburg/2026/citydataexplosion.svg similarity index 100% rename from public/citydataexplosion.svg rename to public/hamburg/2026/citydataexplosion.svg diff --git a/public/didays2026.ics b/public/hamburg/2026/didays2026.ics similarity index 100% rename from public/didays2026.ics rename to public/hamburg/2026/didays2026.ics diff --git a/public/digitalcourage.svg b/public/hamburg/2026/digitalcourage.svg similarity index 100% rename from public/digitalcourage.svg rename to public/hamburg/2026/digitalcourage.svg diff --git a/public/endof10.svg b/public/hamburg/2026/endof10.svg similarity index 100% rename from public/endof10.svg rename to public/hamburg/2026/endof10.svg diff --git a/public/hamburg/2026/logo.svg b/public/hamburg/2026/logo.svg new file mode 100644 index 0000000..a03b0d2 --- /dev/null +++ b/public/hamburg/2026/logo.svg @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/logo_social.png b/public/hamburg/2026/logo_social.png similarity index 100% rename from public/logo_social.png rename to public/hamburg/2026/logo_social.png diff --git a/public/ogr.svg b/public/hamburg/2026/ogr.svg similarity index 100% rename from public/ogr.svg rename to public/hamburg/2026/ogr.svg diff --git a/public/osm.svg b/public/hamburg/2026/osm.svg similarity index 100% rename from public/osm.svg rename to public/hamburg/2026/osm.svg diff --git a/public/repaircafe.svg b/public/hamburg/2026/repaircafe.svg similarity index 98% rename from public/repaircafe.svg rename to public/hamburg/2026/repaircafe.svg index 135a3bd..2ef4228 100644 --- a/public/repaircafe.svg +++ b/public/hamburg/2026/repaircafe.svg @@ -3,8 +3,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + orga@didays.de.

-
+ \ No newline at end of file diff --git a/src/components/Navbar.astro b/src/components/Navbar.astro index 7f2c9aa..3b2e595 100644 --- a/src/components/Navbar.astro +++ b/src/components/Navbar.astro @@ -1,9 +1,48 @@ --- import path from "../utils/path.ts" -import {Users, List, Info} from "@lucide/astro" +import {Users, List, Info, CalendarDays, type AstroComponent} from "@lucide/astro" + +const route = Astro.url.pathname + + +const events: Record> = { + "fallback": [ + { + name: "Hamburg 2026", + path: "/hamburg/2026/", + icon: CalendarDays, + }, + ], + "/meta": [], + "/hamburg/2026": [ + { + name: "Info & Rückblick", + path: "/hamburg/2026/", + icon: Info, + }, + { + name: "Programm", + path: "/hamburg/2026/programm", + icon: List, + }, + { + name: "Wer", + path: "/hamburg/2026/wer", + icon: Users, + }, + ], +} + +const currentEventPath = Object.keys(events).filter(event => route.startsWith(path(import.meta.env.BASE_URL, event)))[0] + +const event = events[currentEventPath] ?? events["fallback"] --- -