diff --git a/package.json b/package.json
index a1e7cb3..d596b55 100644
--- a/package.json
+++ b/package.json
@@ -16,12 +16,9 @@
"@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 d63e65a..467250a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,29 +10,20 @@ importers:
dependencies:
'@lucide/astro':
specifier: ^1.48.0
- version: 1.48.0(astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0))
+ version: 1.48.0(astro@7.3.5(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(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0))
+ version: 4.3.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0))
astro:
specifier: ^7.3.5
- 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)
+ version: 7.3.5(jiti@2.7.0)
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
@@ -819,9 +810,6 @@ 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==}
@@ -1343,11 +1331,6 @@ 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'}
@@ -1481,9 +1464,6 @@ 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'}
@@ -1904,7 +1884,8 @@ snapshots:
'@esbuild/win32-x64@0.28.2':
optional: true
- '@img/colour@1.1.0': {}
+ '@img/colour@1.1.0':
+ optional: true
'@img/sharp-darwin-arm64@0.35.5':
optionalDependencies:
@@ -2029,9 +2010,9 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.6.0
- '@lucide/astro@1.48.0(astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0))':
+ '@lucide/astro@1.48.0(astro@7.3.5(jiti@2.7.0))':
dependencies:
- astro: 7.3.5(@types/node@26.6.4)(jiti@2.7.0)
+ astro: 7.3.5(jiti@2.7.0)
'@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)':
dependencies:
@@ -2204,12 +2185,12 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.3.3
- '@tailwindcss/vite@4.3.3(vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0))':
+ '@tailwindcss/vite@4.3.3(vite@8.3.1(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(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)
+ vite: 8.3.1(esbuild@0.28.2)(jiti@2.7.0)
'@tybys/wasm-util@0.10.4':
dependencies:
@@ -2234,10 +2215,6 @@ 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': {}
@@ -2255,7 +2232,7 @@ snapshots:
aria-query@5.3.2: {}
- astro@7.3.5(@types/node@26.6.4)(jiti@2.7.0):
+ astro@7.3.5(jiti@2.7.0):
dependencies:
'@astrojs/compiler-rs': 0.5.1
'@astrojs/internal-helpers': 0.11.0
@@ -2305,13 +2282,13 @@ snapshots:
unifont: 0.7.5
unstorage: 1.17.5
verkit: 0.4.1
- 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))
+ 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))
xxhash-wasm: 1.1.0
yargs-parser: 22.0.0
zod: 4.6.5
optionalDependencies:
- sharp: 0.35.5(@types/node@26.6.4)
+ sharp: 0.35.5
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -2777,10 +2754,6 @@ 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
@@ -2860,9 +2833,10 @@ snapshots:
sax@1.6.1: {}
- semver@7.8.5: {}
+ semver@7.8.5:
+ optional: true
- sharp@0.35.5(@types/node@26.6.4):
+ sharp@0.35.5:
dependencies:
'@img/colour': 1.1.0
detect-libc: 2.1.2
@@ -2893,7 +2867,7 @@ snapshots:
'@img/sharp-win32-arm64': 0.35.5
'@img/sharp-win32-ia32': 0.35.5
'@img/sharp-win32-x64': 0.35.5
- '@types/node': 26.6.4
+ optional: true
shiki@4.4.3:
dependencies:
@@ -2957,8 +2931,6 @@ snapshots:
uncrypto@0.1.3: {}
- undici-types@8.9.0: {}
-
undici@8.11.2: {}
unified@11.0.5:
@@ -3025,7 +2997,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite@8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0):
+ vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.7
@@ -3033,14 +3005,13 @@ 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(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)):
+ vitefu@1.1.3(vite@8.3.1(esbuild@0.28.2)(jiti@2.7.0)):
optionalDependencies:
- vite: 8.3.1(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.7.0)
+ vite: 8.3.1(esbuild@0.28.2)(jiti@2.7.0)
xxhash-wasm@1.1.0: {}
diff --git a/public/hamburg/2026/annaelbe.svg b/public/annaelbe.svg
similarity index 99%
rename from public/hamburg/2026/annaelbe.svg
rename to public/annaelbe.svg
index 507e2e2..1cc7d6b 100644
--- a/public/hamburg/2026/annaelbe.svg
+++ b/public/annaelbe.svg
@@ -1,685 +1,685 @@
-
-
-
-
+
+
+
+
diff --git a/public/hamburg/2026/bezahlkarte.png b/public/bezahlkarte.png
similarity index 100%
rename from public/hamburg/2026/bezahlkarte.png
rename to public/bezahlkarte.png
diff --git a/public/hamburg/2026/ccchh.svg b/public/ccchh.svg
similarity index 100%
rename from public/hamburg/2026/ccchh.svg
rename to public/ccchh.svg
diff --git a/public/hamburg/2026/citydataexplosion.svg b/public/citydataexplosion.svg
similarity index 100%
rename from public/hamburg/2026/citydataexplosion.svg
rename to public/citydataexplosion.svg
diff --git a/public/hamburg/2026/didays2026.ics b/public/didays2026.ics
similarity index 100%
rename from public/hamburg/2026/didays2026.ics
rename to public/didays2026.ics
diff --git a/public/hamburg/2026/digitalcourage.svg b/public/digitalcourage.svg
similarity index 100%
rename from public/hamburg/2026/digitalcourage.svg
rename to public/digitalcourage.svg
diff --git a/public/hamburg/2026/endof10.svg b/public/endof10.svg
similarity index 100%
rename from public/hamburg/2026/endof10.svg
rename to public/endof10.svg
diff --git a/public/hamburg/2026/logo.svg b/public/hamburg/2026/logo.svg
deleted file mode 100644
index a03b0d2..0000000
--- a/public/hamburg/2026/logo.svg
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
diff --git a/public/logo.svg b/public/logo.svg
index 55996a3..a03b0d2 100644
--- a/public/logo.svg
+++ b/public/logo.svg
@@ -1,16 +1,174 @@
-
+
\ No newline at end of file
diff --git a/src/components/Navbar.astro b/src/components/Navbar.astro
index 3b2e595..7f2c9aa 100644
--- a/src/components/Navbar.astro
+++ b/src/components/Navbar.astro
@@ -1,48 +1,9 @@
---
import path from "../utils/path.ts"
-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"]
+import {Users, List, Info} from "@lucide/astro"
---
-
+
\ No newline at end of file
diff --git a/src/pages/hamburg/2026/index.astro b/src/pages/hamburg/2026/index.astro
deleted file mode 100644
index 53c254f..0000000
--- a/src/pages/hamburg/2026/index.astro
+++ /dev/null
@@ -1,249 +0,0 @@
----
-import Footer from "../../../components/Footer.astro"
-import Layout from "../../../layouts/Layout.astro"
-import {File} from "@lucide/astro"
-import customPath from "../../../utils/path.ts"
-import {Picture} from "astro:assets"
-import {readFile} from "node:fs/promises"
-import {getPlaiceholder} from "plaiceholder"
-
-import traumweh_1 from "../../../assets/media/hamburg/2026/traumweh_1.png"
-
-type Image = {
- image: any,
- alt: string,
- attribution: string,
- blur?: string,
-}
-
-const images_raw: Record
= {
- traumweh_1: {
- image: traumweh_1,
- alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
- attribution: "CC-4.0 BY-SA traumweh",
- },
- traumweh_2: {
- image: traumweh_1,
- alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
- attribution: "CC-4.0 BY-SA traumweh",
- },
- traumweh_3: {
- image: traumweh_1,
- alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
- attribution: "CC-4.0 BY-SA traumweh",
- },
- traumweh_4: {
- image: traumweh_1,
- alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
- attribution: "CC-4.0 BY-SA traumweh",
- },
- traumweh_5: {
- image: traumweh_1,
- alt: "Ein Foto der Veranstaltung. Eine Speakerin steht auf einer Bühe. Auf einer Leinwand ist eine Präsentation zu sehen. Auf Bannern steht DIDAYS 2026 Hamburg.",
- attribution: "CC-4.0 BY-SA traumweh",
- },
-}
-
-const images: Record = {}
-
-for (const image_name in images_raw) {
- const image = images_raw[image_name]
-
- let buffer
- if (import.meta.env.DEV) {
- const imagePath = new URL(image.image.src, Astro.url)
- const imageResponse = await fetch(imagePath)
- buffer = Buffer.from(await imageResponse.arrayBuffer())
- } else {
- const path = image.image.src.substring((import.meta.env.BASE_URL).length).replace(/(^[\/]*|[\/]*$)/g, '')
- const imagePath = "./dist/" + path
- buffer = await readFile(imagePath)
- }
-
- image["blur"] = (await getPlaiceholder(buffer, {
- size: 10,
- })).base64
- images[image_name] = image
-}
-
-const impressions = ["traumweh_1", "traumweh_2", "traumweh_3", "traumweh_4", "traumweh_5"]
-
-const slides = [
- {
- name: "Vortragstitel",
- path: "/hamburg/2026/slides/vortrag.pdf",
- },
- {
- name: "Vortragstitel",
- path: "/hamburg/2026/slides/vortrag.pdf",
- },
- {
- name: "Vortragstitel",
- path: "/hamburg/2026/slides/vortrag.pdf",
- },
- {
- name: "Vortragstitel",
- path: "/hamburg/2026/slides/vortrag.pdf",
- },
-]
----
-
-
-
-
-
-
-
-
-
-
-
-
- [Platzhaltertext Rückblick Event]
-
-
-
-
-
-
-

-
- {images["traumweh_1"].attribution &&
-
- {images["traumweh_1"].attribution}
-
- }
-
-
-
-
-
-
- [Platzhaltertext Titel]
-
-
- [Platzhaltertext Inhalt]
-
-
-
-
-
-
-
-
- [Platzhaltertext Titel]
-
-
- [Platzhaltertext Inhalt]
-
-
-
-
-
-
-
-
- Eindrücke vom Event
-
-
- {impressions.map(async (impression_name) => {
- const impression = images[impression_name]
- return (
-
-
-
)
-
- },
- )}
-
-
-
-
-
-
-
-
- [Platzhaltertitel Vortragsfolien]
-
-
- [Platzhaltertext Inhalt]
-
-
-
-
-
-
-
-
diff --git a/src/pages/hamburg/2026/programm.astro b/src/pages/hamburg/2026/programm.astro
index e8d74ad..3ba048e 100644
--- a/src/pages/hamburg/2026/programm.astro
+++ b/src/pages/hamburg/2026/programm.astro
@@ -12,7 +12,7 @@ import Layout from "../../../layouts/Layout.astro"
+ style="--pretalx-clr-primary: #ffad12; --pretalx-sticky-top-offset: 68px;">