2 Commits

Author SHA1 Message Date
8f39ec3d35 fix: resolve lint errors in layout and route by updating analytics interface
Some checks failed
Build & Deploy / 🔍 Prepare Environment (push) Successful in 9s
Build & Deploy / 🧪 QA (push) Successful in 1m22s
Build & Deploy / 🏗️ Build (push) Failing after 1m59s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🔔 Notifications (push) Successful in 2s
2026-02-10 00:01:31 +01:00
7734440b90 refactor: remove arrogant marketing terms and localize to German
Some checks failed
Build & Deploy / 🔍 Prepare Environment (push) Successful in 8s
Build & Deploy / 🧪 QA (push) Failing after 48s
Build & Deploy / 🏗️ Build (push) Failing after 3m1s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🔔 Notifications (push) Successful in 2s
2026-02-09 23:50:44 +01:00
9 changed files with 38 additions and 15 deletions

View File

@@ -118,8 +118,8 @@ export default async function RootLayout({
const { headers } = await import("next/headers"); const { headers } = await import("next/headers");
const requestHeaders = await headers(); const requestHeaders = await headers();
if ("setServerContext" in serverServices.analytics) { if (serverServices.analytics.setServerContext) {
(serverServices.analytics as any).setServerContext({ serverServices.analytics.setServerContext({
userAgent: requestHeaders.get("user-agent") || undefined, userAgent: requestHeaders.get("user-agent") || undefined,
language: language:
requestHeaders.get("accept-language")?.split(",")[0] || undefined, requestHeaders.get("accept-language")?.split(",")[0] || undefined,

View File

@@ -86,7 +86,7 @@ export default async function Image() {
letterSpacing: "0.1em", letterSpacing: "0.1em",
}} }}
> >
Engineering Excellence Technische Beratung
</div> </div>
</div> </div>

View File

@@ -86,7 +86,7 @@ export default async function Image() {
letterSpacing: "0.1em", letterSpacing: "0.1em",
}} }}
> >
Engineering Excellence Technische Beratung
</div> </div>
</div> </div>

View File

@@ -10,8 +10,8 @@ export async function POST(req: Request) {
// Set analytics context from request headers for high-fidelity server-side tracking // Set analytics context from request headers for high-fidelity server-side tracking
// This fulfills the "server-side via nextjs proxy" requirement // This fulfills the "server-side via nextjs proxy" requirement
if ("setServerContext" in services.analytics) { if (services.analytics.setServerContext) {
(services.analytics as any).setServerContext({ services.analytics.setServerContext({
userAgent: req.headers.get("user-agent") || undefined, userAgent: req.headers.get("user-agent") || undefined,
language: req.headers.get("accept-language")?.split(",")[0] || undefined, language: req.headers.get("accept-language")?.split(",")[0] || undefined,
referrer: req.headers.get("referer") || undefined, referrer: req.headers.get("referer") || undefined,

View File

@@ -204,7 +204,7 @@ export default function Home() {
<div className="absolute inset-0 bg-accent/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500 z-10 pointer-events-none" /> <div className="absolute inset-0 bg-accent/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500 z-10 pointer-events-none" />
<Image <Image
src="/media/cables/hs-kabel.png" src="/media/cables/hs-kabel.png"
alt="Technical Engineering" alt="Technische Beratung"
width={800} width={800}
height={600} height={600}
className="w-full h-[400px] md:h-[500px] object-cover hover:scale-105 transition-transform duration-700" className="w-full h-[400px] md:h-[500px] object-cover hover:scale-105 transition-transform duration-700"

View File

@@ -275,7 +275,7 @@ const Layout = ({ children }: { children: React.ReactNode }) => {
<div className="bg-slate-950 py-6 border-t border-white/5"> <div className="bg-slate-950 py-6 border-t border-white/5">
<div className="container-custom"> <div className="container-custom">
<p className="text-[10px] uppercase tracking-[0.2em] text-slate-600 text-center md:text-left"> <p className="text-[10px] uppercase tracking-[0.2em] text-slate-600 text-center md:text-left">
Website developed by{" "} Website entwickelt von{" "}
<a <a
href="https://mintel.me" href="https://mintel.me"
target="_blank" target="_blank"

View File

@@ -73,4 +73,15 @@ export interface AnalyticsService {
* ``` * ```
*/ */
trackPageview(url?: string): void; trackPageview(url?: string): void;
/**
* Set the server-side context for the current request.
* This is used for server-side tracking (e.g. from Next.js proxy).
*/
setServerContext?(context: {
userAgent?: string;
language?: string;
referrer?: string;
ip?: string;
}): void;
} }

View File

@@ -68,4 +68,16 @@ export class NoopAnalyticsService implements AnalyticsService {
trackPageview(_url?: string) { trackPageview(_url?: string) {
// intentionally noop - analytics are disabled // intentionally noop - analytics are disabled
} }
/**
* No-op implementation of setServerContext.
*/
setServerContext(_context: {
userAgent?: string;
language?: string;
referrer?: string;
ip?: string;
}) {
// intentionally noop - analytics are disabled
}
} }

View File

@@ -1,7 +1,7 @@
{ {
"Index": { "Index": {
"hero": { "hero": {
"tag": "Engineering Excellence", "tag": "Technische Beratung",
"title": "Spezialisierter Partner für Energiekabelprojekte", "title": "Spezialisierter Partner für Energiekabelprojekte",
"titleHighlight": "Energiekabelprojekte", "titleHighlight": "Energiekabelprojekte",
"subtitle": "Herstellerneutrale technische Beratung für Ihre Projekte in Mittel- und Hochspannungsnetzen bis zu 110 kV.", "subtitle": "Herstellerneutrale technische Beratung für Ihre Projekte in Mittel- und Hochspannungsnetzen bis zu 110 kV.",
@@ -31,7 +31,7 @@
"expertise": { "expertise": {
"tag": "Expertise", "tag": "Expertise",
"title": "Anwendungen & Zielgruppen", "title": "Anwendungen & Zielgruppen",
"description": "Wir unterstützen Akteure der Energiewende bei der Realisierung komplexer Kabelprojekte mit höchster Präzision.", "description": "Wir unterstützen Sie bei der Realisierung Ihrer Kabelprojekte.",
"groups": [ "groups": [
"Energieversorger", "Energieversorger",
"Ingenieurbüros", "Ingenieurbüros",
@@ -83,16 +83,16 @@
"datenschutz": "Datenschutz", "datenschutz": "Datenschutz",
"agb": "AGB", "agb": "AGB",
"rights": "Alle Rechte vorbehalten.", "rights": "Alle Rechte vorbehalten.",
"madeWith": "Made with", "madeWith": "Entwickelt mit",
"precision": "precision", "precision": "Präzision",
"inGermany": "in Germany" "inGermany": "in Deutschland"
} }
}, },
"About": { "About": {
"hero": { "hero": {
"tagline": "Über uns", "tagline": "Über uns",
"title": "Wir gestalten die Infrastructure der Zukunft", "title": "Zuverlässige Begleitung für Ihre Netzinfrastruktur",
"subtitle": "MB Grid Solution steht für technische Exzellenz in der Energiekabeltechnologie. Wir verstehen uns als Ihr technischer Lotse." "subtitle": "Herstellerneutrale Beratung in der Energiekabeltechnologie. Wir verstehen uns als Ihr technischer Lotse."
}, },
"intro": { "intro": {
"p1": "Unsere Wurzeln liegen in der tiefen praktischen Erfahrung unserer technischen Berater und unserer Netzwerke im globalem Kabelmarkt. Wir vereinen Tradition mit modernster Innovation, um zuverlässige Energielösungen für Projekte bis 110 kV zu realisieren.", "p1": "Unsere Wurzeln liegen in der tiefen praktischen Erfahrung unserer technischen Berater und unserer Netzwerke im globalem Kabelmarkt. Wir vereinen Tradition mit modernster Innovation, um zuverlässige Energielösungen für Projekte bis 110 kV zu realisieren.",