diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index ac98d0d2c..189041012 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -207,6 +207,7 @@ jobs: UMAMI_WEBSITE_ID=${{ secrets.UMAMI_WEBSITE_ID || vars.UMAMI_WEBSITE_ID }} UMAMI_API_ENDPOINT=${{ secrets.UMAMI_API_ENDPOINT || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }} NPM_TOKEN=${{ steps.auth.outputs.working_token }} + NPM_DOMAIN=${{ steps.auth.outputs.working_domain }} tags: registry.infra.mintel.me/mintel/e-tib.com:${{ needs.prepare.outputs.image_tag }} secrets: | "NPM_TOKEN=${{ steps.auth.outputs.working_token }}" diff --git a/.turbo-test/85340b254e0f10f1-manifest.json b/.turbo-test/85340b254e0f10f1-manifest.json new file mode 100644 index 000000000..a4befad0c --- /dev/null +++ b/.turbo-test/85340b254e0f10f1-manifest.json @@ -0,0 +1 @@ +{"files":{".turbo/turbo-lint.log":{"size":10746,"mtime_nanos":1779098006288513580,"mode":420,"is_dir":false}},"order":[".turbo/turbo-lint.log"]} \ No newline at end of file diff --git a/.turbo-test/85340b254e0f10f1-meta.json b/.turbo-test/85340b254e0f10f1-meta.json new file mode 100644 index 000000000..f82ab9682 --- /dev/null +++ b/.turbo-test/85340b254e0f10f1-meta.json @@ -0,0 +1 @@ +{"hash":"85340b254e0f10f1","duration":6595,"sha":"35d9650626b56a727e9c1981308145cb7b2f28aa","dirty_hash":"9cc3e16c40a10f42f7a963333e800e1384f047b1f387b18b5f37769c34f36609"} \ No newline at end of file diff --git a/.turbo-test/85340b254e0f10f1.tar.zst b/.turbo-test/85340b254e0f10f1.tar.zst new file mode 100644 index 000000000..f3a5987ce Binary files /dev/null and b/.turbo-test/85340b254e0f10f1.tar.zst differ diff --git a/.turbo/cache/32905076da5f4894-manifest.json b/.turbo/cache/32905076da5f4894-manifest.json new file mode 100644 index 000000000..3703b6b01 --- /dev/null +++ b/.turbo/cache/32905076da5f4894-manifest.json @@ -0,0 +1 @@ +{"files":{".turbo/turbo-typecheck.log":{"size":92,"mtime_nanos":1779097674383861303,"mode":420,"is_dir":false}},"order":[".turbo/turbo-typecheck.log"]} \ No newline at end of file diff --git a/.turbo/cache/32905076da5f4894-meta.json b/.turbo/cache/32905076da5f4894-meta.json new file mode 100644 index 000000000..bf85dee73 --- /dev/null +++ b/.turbo/cache/32905076da5f4894-meta.json @@ -0,0 +1 @@ +{"hash":"32905076da5f4894","duration":4492,"sha":"35d9650626b56a727e9c1981308145cb7b2f28aa","dirty_hash":"58f8ebc92a0452cbb0a09c5ebe800385fcc42ff82fee098bb7d6c8828bc526f0"} \ No newline at end of file diff --git a/.turbo/cache/32905076da5f4894.tar.zst b/.turbo/cache/32905076da5f4894.tar.zst new file mode 100644 index 000000000..3a9258793 Binary files /dev/null and b/.turbo/cache/32905076da5f4894.tar.zst differ diff --git a/.turbo/cache/7e2629942c881f80-manifest.json b/.turbo/cache/7e2629942c881f80-manifest.json new file mode 100644 index 000000000..75459a08c --- /dev/null +++ b/.turbo/cache/7e2629942c881f80-manifest.json @@ -0,0 +1 @@ +{"files":{".turbo/turbo-test.log":{"size":818,"mtime_nanos":1779097671747078359,"mode":420,"is_dir":false}},"order":[".turbo/turbo-test.log"]} \ No newline at end of file diff --git a/.turbo/cache/7e2629942c881f80-meta.json b/.turbo/cache/7e2629942c881f80-meta.json new file mode 100644 index 000000000..17ed2a5bf --- /dev/null +++ b/.turbo/cache/7e2629942c881f80-meta.json @@ -0,0 +1 @@ +{"hash":"7e2629942c881f80","duration":1855,"sha":"35d9650626b56a727e9c1981308145cb7b2f28aa","dirty_hash":"58f8ebc92a0452cbb0a09c5ebe800385fcc42ff82fee098bb7d6c8828bc526f0"} \ No newline at end of file diff --git a/.turbo/cache/7e2629942c881f80.tar.zst b/.turbo/cache/7e2629942c881f80.tar.zst new file mode 100644 index 000000000..3313d9a66 Binary files /dev/null and b/.turbo/cache/7e2629942c881f80.tar.zst differ diff --git a/.turbo/cache/85340b254e0f10f1-manifest.json b/.turbo/cache/85340b254e0f10f1-manifest.json new file mode 100644 index 000000000..cd5032ee3 --- /dev/null +++ b/.turbo/cache/85340b254e0f10f1-manifest.json @@ -0,0 +1 @@ +{"files":{".turbo/turbo-lint.log":{"size":10746,"mtime_nanos":1779097675143794164,"mode":420,"is_dir":false}},"order":[".turbo/turbo-lint.log"]} \ No newline at end of file diff --git a/.turbo/cache/85340b254e0f10f1-meta.json b/.turbo/cache/85340b254e0f10f1-meta.json new file mode 100644 index 000000000..2fe160e7f --- /dev/null +++ b/.turbo/cache/85340b254e0f10f1-meta.json @@ -0,0 +1 @@ +{"hash":"85340b254e0f10f1","duration":5252,"sha":"35d9650626b56a727e9c1981308145cb7b2f28aa","dirty_hash":"58f8ebc92a0452cbb0a09c5ebe800385fcc42ff82fee098bb7d6c8828bc526f0"} \ No newline at end of file diff --git a/.turbo/cache/85340b254e0f10f1.tar.zst b/.turbo/cache/85340b254e0f10f1.tar.zst new file mode 100644 index 000000000..f3a5987ce Binary files /dev/null and b/.turbo/cache/85340b254e0f10f1.tar.zst differ diff --git a/.turbo/turbo-lint.log b/.turbo/turbo-lint.log new file mode 100644 index 000000000..5f010f0ba --- /dev/null +++ b/.turbo/turbo-lint.log @@ -0,0 +1,119 @@ + + +> e-tib-nextjs@2.2.12 lint /Volumes/Alpha SSD/Coding/e-tib.com +> eslint . + + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/[slug]/page.tsx + 1:20 warning 'redirect' is defined but never used @typescript-eslint/no-unused-vars + 67:24 warning Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element @next/next/no-img-element + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/blog/[slug]/page.tsx + 1:20 warning 'redirect' is defined but never used @typescript-eslint/no-unused-vars + 39:24 warning Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element @next/next/no-img-element + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/error.tsx + 7:30 warning 'AlertTriangle' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/not-found.tsx + 6:10 warning 'Terminal' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/referenzen/[slug]/page.tsx + 91:26 warning Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element @next/next/no-img-element + +/Volumes/Alpha SSD/Coding/e-tib.com/app/[locale]/referenzen/page.tsx + 1:21 warning 'Heading' is defined but never used @typescript-eslint/no-unused-vars + 1:30 warning 'Badge' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/JsonLd.tsx + 1:30 warning 'Graph' is defined but never used @typescript-eslint/no-unused-vars + 43:31 warning '_' is assigned a value but never used @typescript-eslint/no-unused-vars + 48:29 warning '_' is assigned a value but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/CertificatesBlock.tsx + 6:10 warning 'Button' is defined but never used @typescript-eslint/no-unused-vars + 9:10 warning 'FileText' is defined but never used @typescript-eslint/no-unused-vars + 77:5 warning Error: Calling setState synchronously within an effect can trigger cascading renders + +Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following: +* Update external systems with the latest state from React. +* Subscribe for updates from some external system, calling setState in a callback function when external state changes. + +Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect). + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/CertificatesBlock.tsx:77:5 + 75 | + 76 | useEffect(() => { +> 77 | setIsMounted(true); + | ^^^^^^^^^^^^ Avoid calling setState() directly within an effect + 78 | }, []); + 79 | + 80 | const badgeText = badge || 'Zertifizierungen & Nachweise'; react-hooks/set-state-in-effect + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/CompetenceBentoGrid.tsx + 53:5 warning Error: Calling setState synchronously within an effect can trigger cascading renders + +Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following: +* Update external systems with the latest state from React. +* Subscribe for updates from some external system, calling setState in a callback function when external state changes. + +Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect). + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/CompetenceBentoGrid.tsx:53:5 + 51 | + 52 | useEffect(() => { +> 53 | setIsMounted(true); + | ^^^^^^^^^^^^ Avoid calling setState() directly within an effect + 54 | }, []); + 55 | + 56 | const badge = props.badge || data?.badge || 'Leistungsspektrum'; react-hooks/set-state-in-effect + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/HeroVideo.tsx + 5:18 warning 'AnimatePresence' is defined but never used @typescript-eslint/no-unused-vars + 6:10 warning 'useState' is defined but never used @typescript-eslint/no-unused-vars + 6:20 warning 'useEffect' is defined but never used @typescript-eslint/no-unused-vars + 45:12 warning 'e' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/InteractiveGermanyMap.tsx + 5:46 warning 'ArrowUpRight' is defined but never used @typescript-eslint/no-unused-vars + 147:23 warning 'isNearRight' is assigned a value but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/blocks/TeamGridBlock.tsx + 20:39 warning 'title' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars + 20:46 warning 'department' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars + 20:58 warning 'showContact' is assigned a value but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/decorations/CorporateBackground.tsx + 36:13 warning 'distance' is assigned a value but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/home/Hero.tsx + 9:39 warning 'useCallback' is defined but never used @typescript-eslint/no-unused-vars + 77:6 warning React Hook useEffect has a missing dependency: 'HERO_PLACEHOLDERS'. Either include it or remove the dependency array react-hooks/exhaustive-deps + +/Volumes/Alpha SSD/Coding/e-tib.com/components/home/MeetTheTeam.tsx + 8:9 warning 'teamT' is assigned a value but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/layout/Footer.tsx + 4:35 warning 'Accessibility' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/providers/InitialLoader.tsx + 5:8 warning 'Image' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/providers/PageTransitionShutter.tsx + 6:8 warning 'Image' is defined but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/search/AIOrb.tsx + 153:13 warning 'breathe' is assigned a value but never used @typescript-eslint/no-unused-vars + 212:15 warning 'targetExcite' is assigned a value but never used @typescript-eslint/no-unused-vars + +/Volumes/Alpha SSD/Coding/e-tib.com/components/search/AISearchResults.tsx + 99:6 warning React Hook useEffect has missing dependencies: 'handleSearch' and 'initialQuery'. Either include them or remove the dependency array react-hooks/exhaustive-deps + +/Volumes/Alpha SSD/Coding/e-tib.com/lib/blog.ts + 6:7 warning 'BLOG_DIR' is assigned a value but never used @typescript-eslint/no-unused-vars + 94:7 warning 'next' is never reassigned. Use 'const' instead prefer-const + 95:7 warning 'prev' is never reassigned. Use 'const' instead prefer-const + +✖ 38 problems (0 errors, 38 warnings) + 0 errors and 2 warnings potentially fixable with the `--fix` option. + diff --git a/.turbo/turbo-test.log b/.turbo/turbo-test.log new file mode 100644 index 000000000..143541b43 --- /dev/null +++ b/.turbo/turbo-test.log @@ -0,0 +1,31 @@ + + +> e-tib-nextjs@2.2.12 test /Volumes/Alpha SSD/Coding/e-tib.com +> vitest run --passWithNoTests + +[?25l + RUN v4.1.2 /Volumes/Alpha SSD/Coding/e-tib.com + +[?2026h + ❯ lib/mail/mailer.test.ts [queued] + + Test Files 0 passed (2) + Tests 0 passed (0) + Start at 11:47:51 + Duration 504ms +[?2026l[?2026h ✓ lib/mail/mailer.test.ts (1 test) 2ms + + ❯ lib/env.test.ts 0/6 + + Test Files 1 passed (2) + Tests 1 passed (7) + Start at 11:47:51 + Duration 605ms +[?2026l ✓ lib/env.test.ts (6 tests) 3ms + + Test Files 2 passed (2) + Tests 7 passed (7) + Start at 11:47:51 + Duration 672ms (transform 113ms, setup 0ms, import 222ms, tests 5ms, environment 813ms) + +[?25h diff --git a/.turbo/turbo-typecheck.log b/.turbo/turbo-typecheck.log new file mode 100644 index 000000000..eb12db083 --- /dev/null +++ b/.turbo/turbo-typecheck.log @@ -0,0 +1,5 @@ + + +> e-tib-nextjs@2.2.12 typecheck /Volumes/Alpha SSD/Coding/e-tib.com +> tsc --noEmit + diff --git a/Dockerfile b/Dockerfile index 34a92144b..bec952c36 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,13 +20,15 @@ ENV CI=true COPY pnpm-lock.yaml package.json .npmrc* ./ COPY patches* ./patches/ +ARG NPM_DOMAIN=git.infra.mintel.me + # Configure private registry and install dependencies RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ --mount=type=secret,id=NPM_TOKEN \ if [ -f /run/secrets/NPM_TOKEN ]; then \ export NPM_TOKEN=$(cat /run/secrets/NPM_TOKEN); \ - echo "@mintel:registry=https://git.infra.mintel.me/api/packages/mmintel/npm" > .npmrc; \ - echo "//git.infra.mintel.me/api/packages/mmintel/npm/:_authToken=${NPM_TOKEN}" >> .npmrc; \ + echo "@mintel:registry=https://${NPM_DOMAIN}/api/packages/mmintel/npm" > .npmrc; \ + echo "//${NPM_DOMAIN}/api/packages/mmintel/npm/:_authToken=${NPM_TOKEN}" >> .npmrc; \ fi && \ pnpm install --no-frozen-lockfile && \ rm -f .npmrc diff --git a/app/[locale]/referenzen/page.tsx b/app/[locale]/referenzen/page.tsx index 7a6c1946e..cecbe088e 100644 --- a/app/[locale]/referenzen/page.tsx +++ b/app/[locale]/referenzen/page.tsx @@ -60,10 +60,9 @@ export default async function ReferenzenOverview(props: { params: Promise<{ loca }); return ( -
+
{/* Map Hero Section */} Erfolgreich umgesetzte
Projekte.} description="Vom Breitbandausbau bis zur komplexen 110kV-Trasse: Ein Auszug unserer bundesweiten Projekte, bei denen wir Infrastruktur für die Zukunft geschaffen haben. Entdecken Sie unsere Standorte." @@ -104,7 +103,7 @@ export default async function ReferenzenOverview(props: { params: Promise<{ loca
- {ref.frontmatter.location} + {cleanLocation(ref.frontmatter.location)}
diff --git a/test-build-env.js b/test-build-env.js new file mode 100644 index 000000000..a714923fb --- /dev/null +++ b/test-build-env.js @@ -0,0 +1,5 @@ +const val = process.env.NEXT_PUBLIC_APP_VERSION; +console.log("val is:", val); +if (val) { + console.log("replace:", val.replace(/^v/, '')); +}