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 ff60934..0000000 Binary files a/frontend-starter/app/fonts/lato-400.woff2 and /dev/null differ diff --git a/frontend-starter/app/fonts/lato-700.woff2 b/frontend-starter/app/fonts/lato-700.woff2 deleted file mode 100644 index 11de83f..0000000 Binary files a/frontend-starter/app/fonts/lato-700.woff2 and /dev/null differ diff --git a/frontend-starter/app/fonts/lato-900.woff2 b/frontend-starter/app/fonts/lato-900.woff2 deleted file mode 100644 index 72a9bc3..0000000 Binary files a/frontend-starter/app/fonts/lato-900.woff2 and /dev/null differ 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