From ba6b0b08fe98c708d2eef423b3f55af10fddf4bc Mon Sep 17 00:00:00 2001 From: Florian Bernard Date: Thu, 5 Nov 2026 16:35:29 +0000 Subject: [PATCH] chore: Vorlage an Projekt-Referenz und @ep/ui anbinden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Plugin prodi über Marketplace ep-plugins einbinden; Hook schutz-main.sh entfernt - @ep/ui als Paket aus Gitea-Registry (.npmrc, Dockerfile mit GITEA_NPM_TOKEN) - Eigene Schriften, EpKopf/EpFuss und Styles durch @ep/ui ersetzt - CLAUDE.md verschlankt, Steckbrief unter docs/, n8n-Ordner angelegt - .gitattributes für LF-Zeilenenden Co-Authored-By: Claude Opus 5.5 --- .claude/hooks/schutz-main.sh | 11 - .claude/settings.json | 51 +-- .devcontainer/devcontainer.json | 10 +- .gitattributes | 2 + .gitea/template | 2 +- .gitignore | 2 + CLAUDE.md | 58 +-- Dockerfile | 5 +- docs/steckbrief.md | 16 + frontend-starter/.npmrc | 2 + frontend-starter/app/fonts/lato-400.woff2 | Bin 23580 -> 0 bytes frontend-starter/app/fonts/lato-700.woff2 | Bin 23040 -> 0 bytes frontend-starter/app/fonts/lato-900.woff2 | Bin 22504 -> 0 bytes frontend-starter/app/globals.css | 363 +----------------- frontend-starter/app/layout.tsx | 22 +- frontend-starter/app/page.tsx | 2 +- frontend-starter/components/EpFuss.tsx | 10 - frontend-starter/components/EpKopf.tsx | 33 -- frontend-starter/next-env.d.ts | 1 + frontend-starter/package-lock.json | 428 ++++++++++++---------- frontend-starter/package.json | 8 +- n8n/credentials.yml | 5 + n8n/workflows/.gitkeep | 0 23 files changed, 312 insertions(+), 719 deletions(-) delete mode 100644 .claude/hooks/schutz-main.sh create mode 100644 .gitattributes create mode 100644 docs/steckbrief.md create mode 100644 frontend-starter/.npmrc delete mode 100644 frontend-starter/app/fonts/lato-400.woff2 delete mode 100644 frontend-starter/app/fonts/lato-700.woff2 delete mode 100644 frontend-starter/app/fonts/lato-900.woff2 delete mode 100644 frontend-starter/components/EpFuss.tsx delete mode 100644 frontend-starter/components/EpKopf.tsx create mode 100644 n8n/credentials.yml create mode 100644 n8n/workflows/.gitkeep diff --git a/.claude/hooks/schutz-main.sh b/.claude/hooks/schutz-main.sh deleted file mode 100644 index e4ba0be..0000000 --- a/.claude/hooks/schutz-main.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -# Blockiert git commit und git push, solange main ausgecheckt ist. -befehl=$(node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{try{console.log(JSON.parse(s).tool_input?.command??"")}catch{console.log("")}})') -if echo "$befehl" | grep -Eq 'git (commit|push)'; then - branch=$(git -C "$CLAUDE_PROJECT_DIR" branch --show-current) - if [ "$branch" = "main" ]; then - echo "Du stehst auf main. Lege zuerst einen Branch an: git switch -c feat/" >&2 - exit 2 - fi -fi -exit 0 \ No newline at end of file diff --git a/.claude/settings.json b/.claude/settings.json index c38dcc9..e713b9f 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,44 +1,25 @@ { + "extraKnownMarketplaces": { + "ep-plugins": { + "source": { "source": "git", "url": "ssh://git@192.168.20.70:2222/EP-Intern/Projekt-Referenz.git" } + } + }, + "enabledPlugins": { "prodi@ep-plugins": true }, "permissions": { "defaultMode": "plan", "allow": [ - "Bash(git status:*)", - "Bash(git diff:*)", - "Bash(git log:*)", - "Bash(git fetch:*)", - "Bash(git pull:*)", - "Bash(git switch main:*)", - "Bash(git switch -c feat/:*)", - "Bash(git switch -c fix/:*)", - "Bash(git switch -c chore/:*)", + "Bash(git status:*)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(git fetch:*)", + "Bash(git pull:*)", "Bash(git switch main:*)", + "Bash(git switch -c feat/:*)", "Bash(git switch -c fix/:*)", "Bash(git switch -c chore/:*)", "Bash(git add:*)" ], - "ask": [ - "Bash(git commit:*)", - "Bash(git push:*)" - ], + "ask": ["Bash(git commit:*)", "Bash(git push:*)"], "deny": [ - "Bash(git push origin main:*)", - "Bash(git push origin HEAD:main:*)", - "Bash(git push --force:*)", - "Bash(git push -f:*)", - "Bash(git push --force-with-lease:*)", - "Bash(git merge:*)", - "Bash(git rebase:*)", - "Bash(git reset:*)", - "Bash(git branch -D:*)", - "Bash(git branch -d:*)", - "Read(~/.claude/projects/**)" - ] - }, - "hooks": { - "PreToolUse": [ - { - "matcher": "Bash", - "hooks": [ - { "type": "command", "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/schutz-main.sh\"" } - ] - } + "Bash(git push origin main:*)", "Bash(git push origin HEAD:main:*)", + "Bash(git push --force:*)", "Bash(git push -f:*)", "Bash(git push --force-with-lease:*)", + "Bash(git merge:*)", "Bash(git rebase:*)", "Bash(git reset:*)", + "Bash(git branch -D:*)", "Bash(git branch -d:*)", + "Read(./.env*)", "Read(**/.env*)", "Read(~/.claude/projects/**)" ] } -} \ No newline at end of file +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 68c4a55..ba8b6a6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,11 +1,7 @@ { "name": "webapp", "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm", - "features": { - "ghcr.io/anthropics/devcontainer-features/claude-code:1": { - "version": "2.1.312" - } - }, + "runArgs": ["--env-file", "${localEnv:HOME}/.config/ep-dev/devcontainer.env"], "mounts": [ "source=claude-config-${devcontainerId},target=/home/node/.claude,type=volume", "source=${localEnv:HOME}/.ssh/config,target=/home/node/.ssh/config,type=bind,readonly", @@ -21,7 +17,7 @@ "portsAttributes": { "3000": { "label": "App", "onAutoForward": "openBrowser" } }, - "postCreateCommand": "sudo chown -R node:node /home/node/.claude /home/node/.npm && cd frontend-starter && npm install", + "postCreateCommand": "sudo chown -R node:node /home/node/.claude /home/node/.npm && npm install -g @anthropic-ai/claude-code@2.1.312 && cd frontend-starter && npm install", "postStartCommand": "cd frontend-starter && npm install --no-audit --no-fund", "postAttachCommand": "cd frontend-starter && npx -y kill-port 3000 && npm run dev", "customizations": { @@ -44,4 +40,4 @@ ] } } -} \ No newline at end of file +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dea18a6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto eol=lf +*.woff2 binary diff --git a/.gitea/template b/.gitea/template index 0361156..352a556 100644 --- a/.gitea/template +++ b/.gitea/template @@ -1,2 +1,2 @@ *.html -*.md \ No newline at end of file +*.mddocs/*.md diff --git a/.gitignore b/.gitignore index a71711b..bbe3b98 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ node_modules/ data/ .claude/settings.local.json next-env.d.ts +frontend-starter/public/ep-logo.svg +frontend-starter/public/favicon.svg diff --git a/CLAUDE.md b/CLAUDE.md index 2e54264..cb65187 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,52 +1,10 @@ -# Arbeitsweise +# $REPO_NAME -Du arbeitest immer in drei Phasen und überspringst keine: +- Owner: +- n8n-Ordner (Staging und Live): → $REPO_NAME +- Datenbank: SQLite in der App +- Webseite: Next.js im Ordner `frontend-starter`; npm-Befehle dort ausführen +- Port: immer 3000. Dockerfile, Port und `output: "standalone"` nicht ändern. -1. **Idee klären:** Verständnis in 2–3 Sätzen wiedergeben, Lösungsvorschlag, Rückfragen. - Keine Dateien ändern. -2. **Vorgehensweisen:** 2–3 Wege mit Vor- und Nachteilen vorstellen. - Keine Dateien ändern. -3. **Umsetzung** erst nach ausdrücklicher Freigabe durch den Nutzer. - -# Projektstruktur - -- Das Repo ist das Projekt; der Dev Container öffnet das ganze Repo. -- Die Next.js-App (package.json, app/, components/, lib/) liegt im Unterordner - `frontend-starter`. Alle npm-Befehle führst du dort aus, z. B. - `cd frontend-starter && npm run dev`. - -# Git - -## Vor der Umsetzung -- `git switch main && git pull`, damit du vom aktuellen Stand ausgehst. -- Eigenen Branch anlegen: `git switch -c feat/` (Fehler: `fix/...`, - Pflege: `chore/...`). Kurzname in Kleinbuchstaben mit Bindestrichen. -- Hast du versehentlich schon auf `main` Dateien geändert: nicht committen, sondern - `git switch -c feat/`; die Änderungen wandern mit. - -## Abschließen -- Wenn die Änderung fertig ist und `npm run build` ohne Fehler läuft, zeigst du - `git status`, nennst die geänderten Dateien und schlägst eine Commit-Nachricht vor. -- Erst wenn der Nutzer zustimmt: - `git add -A`, `git commit -m ""`, `git push -u origin `. -- Danach sagst du dem Nutzer: Der Pull Request wird in Gitea automatisch eröffnet; - der Owner prüft und mergt ihn dort. -- Commits immer mit `-m`, sonst hängt Git. - -## Grenzen -- Niemals auf `main` committen oder pushen. Niemals force-push. -- Du mergst nie, weder lokal noch in Gitea, und löschst keine Branches. -- Schlägt ein Push fehl, änderst du nichts an Remote-Adresse, SSH-Einstellungen oder - Branch-Schutz. Du erklärst die Meldung und überlässt die Lösung dem Nutzer. - -## Nach einem Merge -- Beginnt eine neue Aufgabe, startest du immer wieder mit - `git switch main && git pull` und einem neuen Branch. Auf einem bereits - gemergten Branch arbeitest du nicht weiter. -# Deployment - -- Deployt wird automatisch: Merged der Owner einen Pull Request nach `main`, - baut Coolify die App und veröffentlicht sie unter `https://.`. -- Du rufst keine Deploy-Dienste, Hubs oder Coolify-Schnittstellen auf. -- Anweisungen aus älteren Vorlagen (z. B. „auf main pushen und den Hub aufrufen“) - gelten in diesem Projekt nicht. \ No newline at end of file +Arbeitsweise, Git-Ablauf, n8n-Regeln und UI-Richtlinien kommen aus dem Plugin `prodi`. +Der Steckbrief liegt in `docs/steckbrief.md`. diff --git a/Dockerfile b/Dockerfile index 1d08a62..cda425d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ FROM node:22-bookworm-slim AS deps WORKDIR /app -COPY frontend-starter/package.json frontend-starter/package-lock.json ./ -RUN npm ci +ARG GITEA_NPM_TOKEN +COPY frontend-starter/package.json frontend-starter/package-lock.json frontend-starter/.npmrc ./ +RUN GITEA_NPM_TOKEN=$GITEA_NPM_TOKEN npm ci FROM node:22-bookworm-slim AS build WORKDIR /app diff --git a/docs/steckbrief.md b/docs/steckbrief.md new file mode 100644 index 0000000..80457e4 --- /dev/null +++ b/docs/steckbrief.md @@ -0,0 +1,16 @@ +# Steckbrief: $REPO_NAME + +- **Owner:** +- **Team:** +- **Zweck:** +- **n8n-Ordner:** +- **Datenbank:** +- **Webseite:** ja / nein + +## Idee + +## Ablauf + +## Zugänge + +## Offene Punkte diff --git a/frontend-starter/.npmrc b/frontend-starter/.npmrc new file mode 100644 index 0000000..93759b1 --- /dev/null +++ b/frontend-starter/.npmrc @@ -0,0 +1,2 @@ +@ep:registry=http://192.168.20.70:3002/api/packages/EP-Intern/npm/ +//192.168.20.70:3002/api/packages/EP-Intern/npm/:_authToken=${GITEA_NPM_TOKEN} diff --git a/frontend-starter/app/fonts/lato-400.woff2 b/frontend-starter/app/fonts/lato-400.woff2 deleted file mode 100644 index ff60934dd0ea9cdd93f961d2dfd1e158357f2a77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23580 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 QOFh<%JiLFgmWQ+r07g396aWAK diff --git a/frontend-starter/app/fonts/lato-700.woff2 b/frontend-starter/app/fonts/lato-700.woff2 deleted file mode 100644 index 11de83feaf0fb872c91fce89534fd4e2d8bbda28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 diff --git a/frontend-starter/app/fonts/lato-900.woff2 b/frontend-starter/app/fonts/lato-900.woff2 deleted file mode 100644 index 72a9bc3041b39faf6e4765020dc940cb38a111ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22504 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 diff --git a/frontend-starter/app/globals.css b/frontend-starter/app/globals.css index b189ee3..02a9c82 100644 --- a/frontend-starter/app/globals.css +++ b/frontend-starter/app/globals.css @@ -1,363 +1,8 @@ @import "tailwindcss"; @import "tw-animate-css"; @import "shadcn/tailwind.css"; +@import "@ep/ui/theme.css"; +@source "../node_modules/@ep/ui/dist"; -@custom-variant dark (&:is(.dark *)); - -/* ------------------------------------------------------------------ * - * E&P-Layout wie auf ep-reisen.de und im EP-Budget-Tool: - * Lato, Tiefblau #18527b als Akzent, Magenta-Verlauf nur für die - * Hauptaktion (.ep-cta), eckige Formen, hellblauer Seitenhintergrund. - * Jede Oberfläche der Schulung nutzt genau diese Werte und Bausteine. - * Keine weiteren Farben, keine anderen Schriften, keine runden Ecken. - * ------------------------------------------------------------------ */ -@theme inline { - --color-ground: var(--ground); - --color-surface: var(--surface); - --color-hairline: var(--hairline); - --color-ink: var(--ink); - --color-ink-muted: var(--ink-muted); - --color-accent: var(--accent); - --color-accent-press: var(--accent-press); - --color-accent-soft: var(--accent-soft); - --color-on-accent: var(--on-accent); - --color-strich: var(--strich); - --color-fehler: var(--fehler); - /* alter Name aus früheren Versionen des Starters, zeigt jetzt auf das Tiefblau */ - --color-brand: var(--accent); - - --font-heading: var(--font-sans); - --font-body: var(--body-font); - --font-sans: var(--font-sans); - --color-sidebar-ring: var(--sidebar-ring); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar: var(--sidebar); - --color-chart-5: var(--chart-5); - --color-chart-4: var(--chart-4); - --color-chart-3: var(--chart-3); - --color-chart-2: var(--chart-2); - --color-chart-1: var(--chart-1); - --color-ring: var(--ring); - --color-input: var(--input); - --color-border: var(--border); - --color-destructive: var(--destructive); - --color-accent-foreground: var(--accent-foreground); - --color-muted-foreground: var(--muted-foreground); - --color-muted: var(--muted); - --color-secondary-foreground: var(--secondary-foreground); - --color-secondary: var(--secondary); - --color-primary-foreground: var(--primary-foreground); - --color-primary: var(--primary); - --color-popover-foreground: var(--popover-foreground); - --color-popover: var(--popover); - --color-card-foreground: var(--card-foreground); - --color-card: var(--card); - --color-foreground: var(--foreground); - --color-background: var(--background); - --radius-sm: calc(var(--radius) * 0.6); - --radius-md: calc(var(--radius) * 0.8); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) * 1.4); - --radius-2xl: calc(var(--radius) * 1.8); - --radius-3xl: calc(var(--radius) * 2.2); - --radius-4xl: calc(var(--radius) * 2.6); -} - -/* Eckig wie ep-reisen.de: alle Tailwind-Radien auf 0 */ -@theme { - --radius-xs: 0px; - --radius-sm: 0px; - --radius-md: 0px; - --radius-lg: 0px; - --radius-xl: 0px; - --radius-2xl: 0px; - --radius-3xl: 0px; -} - -:root { - --ground: #ebf3fa; /* Seitenhintergrund */ - --surface: #ffffff; /* Flächen, Karten, Kopfleiste */ - --hairline: #d8e3ed; /* Linien */ - --ink: #27272a; /* Text */ - --ink-muted: #52525b; /* gedämpfter Text */ - --accent: oklch(0.97 0 0); /* E&P-Tiefblau */ - --accent-press: #103c5b; - --accent-soft: #e3eef8; - --on-accent: #ffffff; - --strich: #009fff; /* nur Zierstrich unter Überschriften, nie für Text */ - --fehler: #c0261b; /* Fehlermeldungen */ - /* --font-lato setzt next/font auf , siehe app/layout.tsx */ - --heading-font: var(--font-lato), "Lato", ui-sans-serif, system-ui, sans-serif; - --body-font: var(--font-lato), "Lato", ui-sans-serif, system-ui, sans-serif; - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.87 0 0); - --chart-2: oklch(0.556 0 0); - --chart-3: oklch(0.439 0 0); - --chart-4: oklch(0.371 0 0); - --chart-5: oklch(0.269 0 0); - --radius: 0.625rem; - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -@layer base { - html { - color-scheme: light; - background: var(--ground); - @apply font-sans; - } - - body { - background: var(--ground); - color: var(--ink); - font-family: var(--body-font); - line-height: 1.6; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - @apply bg-background text-foreground; - } - - h1, - h2, - h3, - h4 { - font-family: var(--heading-font); - font-weight: 700; - letter-spacing: -0.01em; - line-height: 1.2; - } - - a { - color: var(--accent); - text-decoration: underline; - text-underline-offset: 3px; - } - - code { - background: var(--accent-soft); - padding: 0 0.3em; - font-size: 0.92em; - } - - :focus-visible { - outline: 2px solid var(--accent); - outline-offset: 2px; - } - - @media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } - } - * { - @apply border-border outline-ring/50; - } -} - -/* Bausteine für alle Oberflächen. Neue Seiten setzen sich daraus zusammen. */ -@layer components { - /* Skip-Link (erstes Element im Body) */ - .skip-link { - position: absolute; - left: -9999px; - top: 0; - z-index: 100; - background: var(--accent); - color: var(--on-accent); - padding: 0.75rem 1.25rem; - font-weight: 700; - } - .skip-link:focus { - left: 0; - } - - /* Überschrift mit kurzem Zierstrich darunter */ - .ep-ueberschrift { - color: var(--ink); - font-weight: 900; - } - .ep-ueberschrift::after { - content: ""; - display: block; - width: 3rem; - height: 3px; - margin-top: 0.6rem; - background: var(--strich); - } - - /* Weiße Fläche mit feiner Linie, für Formulare und Ergebnisse */ - .ep-karte { - background: var(--surface); - border: 1px solid var(--hairline); - padding: 1.25rem; - } - - .ep-label { - font-size: 0.875rem; - font-weight: 700; - color: var(--ink); - } - - /* Eingabefelder, Auswahllisten und Textfelder */ - .ep-feld { - width: 100%; - background: var(--surface); - border: 1px solid #b9c9d8; - color: var(--ink); - padding: 0.6rem 0.75rem; - } - .ep-feld:focus { - border-color: var(--accent); - outline: 2px solid var(--accent); - outline-offset: 0; - } - - /* Knopf in Tiefblau. Für die eine Hauptaktion zusätzlich .ep-cta */ - .ep-knopf { - display: inline-flex; - align-items: center; - justify-content: center; - gap: 0.5rem; - background-color: var(--accent); - color: var(--on-accent); - font-weight: 700; - padding: 0.7rem 1.4rem; - cursor: pointer; - } - .ep-knopf:hover { - background-color: var(--accent-press); - } - .ep-knopf:disabled { - opacity: 0.6; - cursor: not-allowed; - } - - /* Hauptaktion: Magenta-Verlauf wie „Alle Reisen anzeigen“ auf ep-reisen.de. Nur einmal je Seite. */ - .ep-cta { - background-image: linear-gradient(120deg, #960167, #9e036a 40%, #fa1a8c); - color: #ffffff; - } - .ep-cta:hover { - background-image: linear-gradient(120deg, #7d0156, #8a035d 40%, #e3107c); - } - - /* Hellblauer Kasten für Ergebnisse und Hinweise */ - .ep-hinweis { - background: var(--accent-soft); - border-left: 4px solid var(--accent); - padding: 0.9rem 1.1rem; - color: var(--ink); - } - - /* Fehlermeldung */ - .ep-fehler { - background: #fdf1f0; - border-left: 4px solid var(--fehler); - padding: 0.9rem 1.1rem; - color: var(--fehler); - font-size: 0.925rem; - } - - /* Tabelle für Ergebnisse */ - .ep-tabelle { - width: 100%; - border-collapse: collapse; - background: var(--surface); - font-size: 0.95rem; - } - .ep-tabelle th { - background: var(--accent); - color: var(--on-accent); - text-align: left; - font-weight: 700; - padding: 0.55rem 0.75rem; - } - .ep-tabelle td { - border-bottom: 1px solid var(--hairline); - padding: 0.55rem 0.75rem; - vertical-align: top; - } - - /* Pfeil-Aufzählung */ - .arrow-list { - list-style: none; - padding: 0; - margin: 0; - } - .arrow-list > li { - position: relative; - padding-left: 1.4rem; - } - .arrow-list > li::before { - content: "→"; - position: absolute; - left: 0; - color: var(--accent); - font-weight: 700; - } -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.87 0 0); - --chart-2: oklch(0.556 0 0); - --chart-3: oklch(0.439 0 0); - --chart-4: oklch(0.371 0 0); - --chart-5: oklch(0.269 0 0); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); -} \ No newline at end of file +/* E&P-Farben, Schriften und Bausteine (ep-karte, ep-knopf, …) kommen aus @ep/ui/theme.css. + * Hier nur app-eigene Regeln ergänzen. */ diff --git a/frontend-starter/app/layout.tsx b/frontend-starter/app/layout.tsx index 2aadb52..c339c36 100644 --- a/frontend-starter/app/layout.tsx +++ b/frontend-starter/app/layout.tsx @@ -1,22 +1,7 @@ import type { Metadata, Viewport } from "next"; -import localFont from "next/font/local"; +import { EpFuss, EpKopf } from "@ep/ui"; import "./globals.css"; -import { EpKopf } from "@/components/EpKopf"; -import { EpFuss } from "@/components/EpFuss"; import { APP_BESCHREIBUNG, APP_TITEL } from "@/lib/app"; -import { cn } from "@/lib/utils"; - -// Hausschrift von ep-reisen.de (Lato, freie Lizenz OFL). Die Dateien liegen im Projekt, -// damit der Build ohne Internet klappt. Lato hat keine Stärke 600, font-semibold erscheint fett. -const lato = localFont({ - src: [ - { path: "./fonts/lato-400.woff2", weight: "400", style: "normal" }, - { path: "./fonts/lato-700.woff2", weight: "700", style: "normal" }, - { path: "./fonts/lato-900.woff2", weight: "900", style: "normal" }, - ], - variable: "--font-lato", - display: "swap", -}); export const metadata: Metadata = { title: `${APP_TITEL} · E&P Reisen`, @@ -31,14 +16,15 @@ export const viewport: Viewport = { }; // E&P-Layout für jede Seite: Kopf mit Logo, Inhalt, Fuß. Seiten liefern nur ihren Inhalt, kein eigenes
. +// Kopf, Fuß und die Hausschrift Lato kommen aus @ep/ui. export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - + Zum Inhalt springen - +
{children}
diff --git a/frontend-starter/app/page.tsx b/frontend-starter/app/page.tsx index c5819f6..1b75930 100644 --- a/frontend-starter/app/page.tsx +++ b/frontend-starter/app/page.tsx @@ -2,7 +2,7 @@ import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { APP_BESCHREIBUNG, APP_TITEL } from "@/lib/app"; // Startseite im E&P-Layout. Kopf und Fuß kommen aus app/layout.tsx, -// Farben und Bausteine (ep-karte, ep-ueberschrift, …) aus app/globals.css. +// Farben und Bausteine (ep-karte, ep-ueberschrift, …) aus @ep/ui/theme.css. export default function Home() { return ( diff --git a/frontend-starter/components/EpFuss.tsx b/frontend-starter/components/EpFuss.tsx deleted file mode 100644 index fa59df8..0000000 --- a/frontend-starter/components/EpFuss.tsx +++ /dev/null @@ -1,10 +0,0 @@ -/** Fuß im E&P-Layout. Gehört zum festen Layout, bitte nicht umbauen. */ -export function EpFuss() { - return ( -
-
- E&P Reisen & Events · interne Anwendung -
-
- ); -} diff --git a/frontend-starter/components/EpKopf.tsx b/frontend-starter/components/EpKopf.tsx deleted file mode 100644 index ceb23cc..0000000 --- a/frontend-starter/components/EpKopf.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import Link from "next/link"; -import { APP_TITEL } from "@/lib/app"; - -/** - * Kopf im E&P-Layout wie auf ep-reisen.de: weiße Leiste mit dem E&P-Logo (nur auf hellem Grund), - * daneben ein Strich und der Name der Oberfläche aus lib/app.ts. Darunter ein tiefblauer Balken. - * Gehört zum festen Layout, bitte nicht umbauen. - */ -export function EpKopf() { - return ( -
-
-
- - {/* eslint-disable-next-line @next/next/no-img-element */} - E&P Reisen & Events - - {APP_TITEL} - - -
-
-
- ); -} diff --git a/frontend-starter/next-env.d.ts b/frontend-starter/next-env.d.ts index c4b7818..a419cbe 100644 --- a/frontend-starter/next-env.d.ts +++ b/frontend-starter/next-env.d.ts @@ -1,6 +1,7 @@ /// /// import "./.next/dev/types/routes.d.ts"; +import "./.next/dev/types/root-params.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/frontend-starter/package-lock.json b/frontend-starter/package-lock.json index 9dade2f..5049f3e 100644 --- a/frontend-starter/package-lock.json +++ b/frontend-starter/package-lock.json @@ -9,10 +9,11 @@ "version": "0.1.0", "dependencies": { "@base-ui/react": "^1.9.0", + "@ep/ui": "^1.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^1.63.0", - "next": "^16.2.0", + "next": "^16.4.5", "react": "^19.2.0", "react-dom": "^19.2.0", "shadcn": "^4.23.0", @@ -673,15 +674,24 @@ "integrity": "sha512-VYJy0uhFm9zTJ1TxBaW/pA8bjbOM/OttaNMwZ1RHG4JKyRG7DhSdiqD1ipQoAyoD22olUtxbP78W9xY3Wd11bg==" }, "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, + "node_modules/@ep/ui": { + "version": "1.0.0", + "resolved": "http://192.168.20.70:3002/api/packages/EP-Intern/npm/@ep/ui/-/ui-1.0.0.tgz", + "integrity": "sha512-3MRjMDgfg9/6S9q4HclUEEzBrspp7HFYbykwQzIvQDOFpM5Mi3LeEfIfCn/WKMRf271XwNz16TOycSBqShEFKQ==", + "peerDependencies": { + "next": "^16", + "react": "^19" + } + }, "node_modules/@floating-ui/core": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz", @@ -727,9 +737,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", "cpu": [ "arm64" ], @@ -739,19 +749,19 @@ "darwin" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" + "@img/sharp-libvips-darwin-arm64": "1.3.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", "cpu": [ "x64" ], @@ -761,19 +771,38 @@ "darwin" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" + "@img/sharp-libvips-darwin-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", "cpu": [ "arm64" ], @@ -787,9 +816,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", "cpu": [ "x64" ], @@ -803,9 +832,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", "cpu": [ "arm" ], @@ -819,9 +848,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", "cpu": [ "arm64" ], @@ -835,9 +864,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", "cpu": [ "ppc64" ], @@ -851,9 +880,9 @@ } }, "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", "cpu": [ "riscv64" ], @@ -867,9 +896,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", "cpu": [ "s390x" ], @@ -883,9 +912,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", "cpu": [ "x64" ], @@ -899,9 +928,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", "cpu": [ "arm64" ], @@ -915,9 +944,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", "cpu": [ "x64" ], @@ -931,9 +960,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", "cpu": [ "arm" ], @@ -943,19 +972,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" + "@img/sharp-libvips-linux-arm": "1.3.4" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", "cpu": [ "arm64" ], @@ -965,19 +994,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" + "@img/sharp-libvips-linux-arm64": "1.3.4" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", "cpu": [ "ppc64" ], @@ -987,19 +1016,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" + "@img/sharp-libvips-linux-ppc64": "1.3.4" } }, "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", "cpu": [ "riscv64" ], @@ -1009,19 +1038,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" + "@img/sharp-libvips-linux-riscv64": "1.3.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", "cpu": [ "s390x" ], @@ -1031,19 +1060,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" + "@img/sharp-libvips-linux-s390x": "1.3.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", "cpu": [ "x64" ], @@ -1053,19 +1082,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" + "@img/sharp-libvips-linux-x64": "1.3.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", "cpu": [ "arm64" ], @@ -1075,19 +1104,19 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", "cpu": [ "x64" ], @@ -1097,38 +1126,54 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.7.0" + "@emnapi/runtime": "^1.11.3" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", "cpu": [ "arm64" ], @@ -1138,16 +1183,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", "cpu": [ "ia32" ], @@ -1157,16 +1202,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": "^20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", "cpu": [ "x64" ], @@ -1176,7 +1221,7 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -1251,15 +1296,15 @@ } }, "node_modules/@next/env": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.7.tgz", - "integrity": "sha512-tMJizPlj6ZYpBMMdK8S0LJufrP4QTdR6pcv9KQ/bVETPAmg0j1mlHE9G2c38UyGHxoBapgwuj7XjbGJ2RcDFOg==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.4.5.tgz", + "integrity": "sha512-JwSPwpdkZL5VMl2jA/q+JI8MZdweAL3xmw5/tb9y/TLtmS0YXZnmYDzSihwk8xTj1OL+WM53gTqaj96yuLp6Xw==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.7.tgz", - "integrity": "sha512-vm1EDI/pVaBNNiychmxk3fft+OhQPVD9cIM/tReLZIQ3TfQ4kqI9DwKk00dzuS1ulC7icbrzCFrmRRlk9PfNdw==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.4.5.tgz", + "integrity": "sha512-W5TniBzWKASbNNwHZ/S/f1MxQUXU/LdjklVMWA0Ujbfl7SZnUzFls45hO0i/sF7Bx1jJBWp7WWmoQajXtX/O8A==", "cpu": [ "arm64" ], @@ -1273,9 +1318,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.7.tgz", - "integrity": "sha512-O3IRSv1ZBL1zs0WrIgefTEcTKFVn+ryxBNe54erJ6KsD+2f/Mmt7g2jOYh8PSBdUwPtKQJuCsTMlZ7tIu2AcsQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.4.5.tgz", + "integrity": "sha512-uWq4qkHapBDS1oFltWS4YxTb9pLHAtLNcpbuK6SmRsebLYZqpBML/j/C0op+50JYGTpZgVL/DWNt/6oWlamrrw==", "cpu": [ "x64" ], @@ -1289,9 +1334,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.7.tgz", - "integrity": "sha512-Re6PZtjBDd0aMU+VcZcC/PrIvj4WhrjDYtMhhCVQamWN4L90EVP0pcEOBQD25prSlw7OzNw5QpHLWMilRLsRNw==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.4.5.tgz", + "integrity": "sha512-FdRcyOx5u5P51mlAqLB9EXdd8jZO5fsdHtk4BAQSkqOywCsbTNN/rmw+jO7pnmjNdAtu2AG46NzbCL2FPDrrgw==", "cpu": [ "arm64" ], @@ -1305,9 +1350,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.7.tgz", - "integrity": "sha512-qyogG9QtBzWxgJfeGBvOEHI3851gTfCF3wLZ5RDLTBJGAmE9p1qDwKCOdrBrvBzRvYDT+gUDp72pzlSEfAXgNA==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.4.5.tgz", + "integrity": "sha512-cyvmmgtRXR8aGVT86wi9Py53IlfyCx7P2fZxuAXAoTummDnhKtUyjrMeXfapqp4qgD+gT5RqyGD/VfA16jEK7Q==", "cpu": [ "arm64" ], @@ -1321,9 +1366,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.7.tgz", - "integrity": "sha512-Vhe4ZDuBpmMogrGi5D4R2Kq4JAQlj6+wvgaFYy31zfES0zPmt6TLA+cuYpM/OLrPZjo2MYQTHVqNUSCR6+fDZQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.4.5.tgz", + "integrity": "sha512-hPc+Fl+N22DAvqZHq559NmamXboOX5Lu8I5Wl0DezfrhTk1Zz21NQeYoZDmNI/NjTcrdsVxM72Fzn2lI+Q+vAw==", "cpu": [ "x64" ], @@ -1337,9 +1382,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.7.tgz", - "integrity": "sha512-srvian89JahFLw1YLBEuhvPJ0DO5lpUeJQMXy4xYo7g628ZlNgXdNkqoxSAv9OYrBfByh6vxISMwW/mRbzCY+g==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.4.5.tgz", + "integrity": "sha512-gbACYE8IP/jlprNTpiWXHb8N9CofOzpnEwH2SrIz1dUbiJf1FbDssDupCAPeP1Taxe8mgG20sGZamJI7KFOdZw==", "cpu": [ "x64" ], @@ -1353,9 +1398,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.7.tgz", - "integrity": "sha512-GX3wvLpULFuRFJzwHaKfm7QZJ18F4ZSuxlPJ96BoBglCzBmdSjyeBKF+ZhWhvL/ckxNfLnNa7bsObO2ipYpszw==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.4.5.tgz", + "integrity": "sha512-+8gj++ZMo8H20Xh2ijjNqyFk5LPLw0AC4Fs4Tq/G94rjjQXhOjN4jgSWsWKPFsyY26hfIeemJIwKtMxOsp5GBA==", "cpu": [ "arm64" ], @@ -1369,9 +1414,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.7.tgz", - "integrity": "sha512-J4WlM72NMk076Qsg0jTdK3SNXatlSdnjW7L7oNGLst1tAGjHrJh/FYi+pw9wyIjEtGRKDNzD0zuiY16oWYWVaw==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.4.5.tgz", + "integrity": "sha512-qNZj66pYXnaWLiF9R9GUbfBdrCv7kC6TaZfIwB2KH5WPc/8pEM3nVOj8hpQhWJU8S94rlH5MPDcX15+RrgUhiw==", "cpu": [ "x64" ], @@ -1488,9 +1533,9 @@ } }, "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" @@ -3207,16 +3252,16 @@ } }, "node_modules/next": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/next/-/next-16.2.7.tgz", - "integrity": "sha512-eMJxgjRzBaj3olkP4cBamHDXL79A8FC6u1GcsO1D1Tsx8bw/LLXUJCaoajVxtnhD3A1IJqIT8IcRJjgBIPJq4w==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/next/-/next-16.4.5.tgz", + "integrity": "sha512-rmdfsWosjTUO+6R0S3KokoIk6Kj0sWDRTe86tZHdqaWH/oXq/udX3/4xb+YQi7aWbyEFoglDU54kaifLCdXbBw==", "license": "MIT", "dependencies": { - "@next/env": "16.2.7", - "@swc/helpers": "0.5.15", + "@next/env": "16.4.5", + "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", + "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "bin": { @@ -3226,15 +3271,15 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.2.7", - "@next/swc-darwin-x64": "16.2.7", - "@next/swc-linux-arm64-gnu": "16.2.7", - "@next/swc-linux-arm64-musl": "16.2.7", - "@next/swc-linux-x64-gnu": "16.2.7", - "@next/swc-linux-x64-musl": "16.2.7", - "@next/swc-win32-arm64-msvc": "16.2.7", - "@next/swc-win32-x64-msvc": "16.2.7", - "sharp": "^0.34.5" + "@next/swc-darwin-arm64": "16.4.5", + "@next/swc-darwin-x64": "16.4.5", + "@next/swc-linux-arm64-gnu": "16.4.5", + "@next/swc-linux-arm64-musl": "16.4.5", + "@next/swc-linux-x64-gnu": "16.4.5", + "@next/swc-linux-x64-musl": "16.4.5", + "@next/swc-win32-arm64-msvc": "16.4.5", + "@next/swc-win32-x64-msvc": "16.4.5", + "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -3260,9 +3305,9 @@ } }, "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.5.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", + "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", "funding": [ { "type": "opencollective", @@ -3279,9 +3324,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -3740,9 +3785,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz", - "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.6.tgz", + "integrity": "sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3808,48 +3853,53 @@ } }, "node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "hasInstallScript": true, + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", "license": "Apache-2.0", "optional": true, "dependencies": { - "@img/colour": "^1.0.0", + "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", - "semver": "^7.7.3" + "semver": "^7.8.5" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/shebang-command": { diff --git a/frontend-starter/package.json b/frontend-starter/package.json index 3bd47ac..031a609 100644 --- a/frontend-starter/package.json +++ b/frontend-starter/package.json @@ -3,16 +3,18 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev -p 3000", - "build": "next build", + "assets": "mkdir -p public && cp node_modules/@ep/ui/assets/*.svg public/", + "dev": "npm run assets && next dev -p 3000", + "build": "npm run assets && next build", "start": "next start -p 3000" }, "dependencies": { "@base-ui/react": "^1.9.0", + "@ep/ui": "^1.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^1.63.0", - "next": "^16.2.0", + "next": "^16.4.5", "react": "^19.2.0", "react-dom": "^19.2.0", "shadcn": "^4.23.0", diff --git a/n8n/credentials.yml b/n8n/credentials.yml new file mode 100644 index 0000000..eee8199 --- /dev/null +++ b/n8n/credentials.yml @@ -0,0 +1,5 @@ +# Zugänge, die die Workflows dieses Projekts brauchen (ohne Geheimnisse). +# - name: "Raumplanung SharePoint" +# typ: microsoftSharePointOAuth2Api +# zweck: Raumbelegung lesen +# klasse: gruen diff --git a/n8n/workflows/.gitkeep b/n8n/workflows/.gitkeep new file mode 100644 index 0000000..e69de29