Compare commits

...

5 Commits

Author SHA1 Message Date
1a68af0eec fix(pdf): align AGB page PDF layout with datasheet design tokens
Some checks failed
Nightly QA / 🔗 Links & Deps (push) Successful in 2m21s
Nightly QA / 🎭 Lighthouse (push) Successful in 4m15s
Nightly QA / 🔍 Static Analysis (push) Failing after 4m45s
Nightly QA / ♿ Accessibility (push) Successful in 5m16s
Nightly QA / 🔔 Notify (push) Successful in 3s
Build & Deploy / 🔍 Prepare (push) Successful in 7s
Build & Deploy / 🧪 QA (push) Successful in 57s
Build & Deploy / 🏗️ Build (push) Failing after 18s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-03-13 22:24:33 +01:00
275784745d feat(db): add migration for pages redirect fields
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Successful in 54s
Build & Deploy / 🏗️ Build (push) Failing after 15s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-03-13 22:19:29 +01:00
4aef49cf2c fix: remove agbs rewrite rules that conflict with slug-mapping (redirect loop)
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Successful in 56s
Build & Deploy / 🏗️ Build (push) Failing after 16s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-03-13 15:35:01 +01:00
8ad3abb6f3 fix(docker): restore valid v1.8.20 base image tag
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Successful in 1m0s
Build & Deploy / 🏗️ Build (push) Failing after 15s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 1s
Nightly QA / 🔗 Links & Deps (push) Successful in 2m32s
Nightly QA / 🎭 Lighthouse (push) Successful in 3m3s
Nightly QA / 🔍 Static Analysis (push) Failing after 4m43s
Nightly QA / ♿ Accessibility (push) Successful in 5m20s
Nightly QA / 🔔 Notify (push) Successful in 14s
2026-03-12 19:12:56 +01:00
1d75b60236 fix(docker): use correctly versioned mintel v2 base images
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Successful in 53s
Build & Deploy / 🏗️ Build (push) Failing after 15s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-03-12 14:39:05 +01:00
5 changed files with 51 additions and 32 deletions

View File

@@ -1,5 +1,5 @@
# Stage 1: Builder
FROM git.infra.mintel.me/mmintel/nextjs:latest AS base
FROM registry.infra.mintel.me/mintel/nextjs:v1.8.20 AS base
WORKDIR /app
# Arguments for build-time configuration
@@ -52,7 +52,7 @@ ENV UV_THREADPOOL_SIZE=3
RUN pnpm build
# Stage 2: Runner
FROM git.infra.mintel.me/mmintel/runtime:latest AS runner
FROM registry.infra.mintel.me/mintel/runtime:v1.8.20 AS runner
WORKDIR /app
# Create nextjs user and group (standardized in runtime image but ensuring local ownership)

View File

@@ -14,8 +14,7 @@ Font.register({
const C = {
navy: '#001a4d',
navyDeep: '#000d26',
green: '#4da612',
greenLight: '#e8f5d8',
accent: '#82ed20',
white: '#FFFFFF',
offWhite: '#f8f9fa',
gray100: '#f3f4f6',
@@ -26,7 +25,7 @@ const C = {
gray900: '#111827',
};
const MARGIN = 56;
const MARGIN = 72;
const styles = StyleSheet.create({
page: {
@@ -34,7 +33,7 @@ const styles = StyleSheet.create({
lineHeight: 1.5,
backgroundColor: C.white,
paddingTop: 0,
paddingBottom: 80,
paddingBottom: 100,
fontFamily: 'Helvetica',
},
@@ -57,17 +56,17 @@ const styles = StyleSheet.create({
},
logoText: {
fontSize: 22,
fontSize: 24,
fontWeight: 700,
color: C.navyDeep,
letterSpacing: 2,
letterSpacing: 1,
textTransform: 'uppercase',
},
docTitle: {
fontSize: 8,
fontSize: 10,
fontWeight: 700,
color: C.green,
color: C.navy,
letterSpacing: 2,
textTransform: 'uppercase',
},
@@ -89,10 +88,10 @@ const styles = StyleSheet.create({
accentBar: {
width: 30,
height: 2,
backgroundColor: C.green,
height: 3,
backgroundColor: C.accent,
marginBottom: 20,
borderRadius: 1,
borderRadius: 1.5,
},
// Lexical Elements
@@ -136,7 +135,7 @@ const styles = StyleSheet.create({
listItemBullet: {
width: 12,
fontSize: 10,
color: C.green,
color: C.accent,
fontWeight: 700,
},
listItemContent: {
@@ -146,7 +145,7 @@ const styles = StyleSheet.create({
lineHeight: 1.7,
},
link: {
color: C.green,
color: C.accent,
textDecoration: 'none',
},
textBold: {
@@ -161,31 +160,31 @@ const styles = StyleSheet.create({
// Footer — matches brochure style
footer: {
position: 'absolute',
bottom: 28,
bottom: 40,
left: MARGIN,
right: MARGIN,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
paddingTop: 12,
borderTopWidth: 2,
borderTopColor: C.green,
paddingTop: 24,
borderTopWidth: 1,
borderTopColor: C.gray200,
},
footerText: {
fontSize: 7,
fontSize: 8,
color: C.gray400,
fontWeight: 400,
fontWeight: 500,
textTransform: 'uppercase',
letterSpacing: 0.8,
letterSpacing: 1,
},
footerBrand: {
fontSize: 9,
fontSize: 10,
fontWeight: 700,
color: C.navyDeep,
textTransform: 'uppercase',
letterSpacing: 1.5,
letterSpacing: 1,
},
});

View File

@@ -443,10 +443,6 @@ const nextConfig = {
source: '/de/kontakt',
destination: '/de/contact',
},
{
source: '/de/agbs',
destination: '/de/terms',
},
// Safety rewrites for English locale using German slugs (legacy or content errors)
{
source: '/en/produkte',
@@ -468,10 +464,6 @@ const nextConfig = {
source: '/en/datenschutz',
destination: '/en/privacy-policy',
},
{
source: '/en/agbs',
destination: '/en/terms',
},
],
afterFiles: [],
fallback: [],

View File

@@ -0,0 +1,22 @@
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres';
export async function up({ db }: MigrateUpArgs): Promise<void> {
// redirect_permanent is a non-localized checkbox → stored on the main pages table
await db.execute(sql`
ALTER TABLE "pages" ADD COLUMN IF NOT EXISTS "redirect_permanent" boolean DEFAULT true;
`);
// redirect_url is a localized text field → stored on the pages_locales table
await db.execute(sql`
ALTER TABLE "pages_locales" ADD COLUMN IF NOT EXISTS "redirect_url" varchar;
`);
}
export async function down({ db }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
ALTER TABLE "pages" DROP COLUMN IF EXISTS "redirect_permanent";
`);
await db.execute(sql`
ALTER TABLE "pages_locales" DROP COLUMN IF EXISTS "redirect_url";
`);
}

View File

@@ -3,6 +3,7 @@ import * as migration_20260223_195151_remove_sku_unique from './20260223_195151_
import * as migration_20260225_003500_add_pages_collection from './20260225_003500_add_pages_collection';
import * as migration_20260225_175000_native_localization from './20260225_175000_native_localization';
import * as migration_20260305_215000_products_featured_image from './20260305_215000_products_featured_image';
import * as migration_20260312_120000_pages_redirect_fields from './20260312_120000_pages_redirect_fields';
export const migrations = [
{
@@ -30,4 +31,9 @@ export const migrations = [
down: migration_20260305_215000_products_featured_image.down,
name: '20260305_215000_products_featured_image',
},
{
up: migration_20260312_120000_pages_redirect_fields.up,
down: migration_20260312_120000_pages_redirect_fields.down,
name: '20260312_120000_pages_redirect_fields',
},
];