diff --git a/lib/pdf-business-card.tsx b/lib/pdf-business-card.tsx index 10307f07..3d165c5a 100644 --- a/lib/pdf-business-card.tsx +++ b/lib/pdf-business-card.tsx @@ -27,13 +27,14 @@ export interface PersonData { export interface PDFBusinessCardProps { person: PersonData; qrCodeDataUrl: string; - isWhiteVariant?: boolean; + variant?: 'blue' | 'white' | 'black'; } // Mintel Aesthetics Colors - EXACT PROD COLORS const COLORS = { primary: '#011dff', // Brand Royal Blue green: '#82ed20', // Brand Accent Green + darkGreen: '#4A9E00', // Darker green for white background visibility white: '#ffffff', grayText: '#6c757d', black: '#0a0a0a', @@ -74,7 +75,7 @@ const styles = StyleSheet.create({ objectFit: 'contain', objectPositionX: 'center', objectPositionY: 'center', - opacity: 0.2, // Much more transparent + opacity: 0.4, // Less transparent, more contrast }, frontContainer: { flex: 1, @@ -83,7 +84,7 @@ const styles = StyleSheet.create({ alignItems: 'center', }, frontLogo: { - width: 140, + width: 175, zIndex: 100, }, frontTagline: { @@ -118,12 +119,12 @@ const styles = StyleSheet.create({ gap: 2, }, frontBrandIcon: { - width: 14, - height: 14, + width: 18, + height: 18, opacity: 0.9, }, frontBrandText: { - fontSize: 4, + fontSize: 5.5, color: COLORS.white, textTransform: 'uppercase', letterSpacing: 0.5, @@ -131,7 +132,7 @@ const styles = StyleSheet.create({ }, frontTaglineBar: { color: COLORS.green, - fontSize: 5.5, + fontSize: 7, letterSpacing: 1.5, fontWeight: 'bold', textTransform: 'uppercase', @@ -192,14 +193,14 @@ const styles = StyleSheet.create({ marginBottom: '5mm', }, nameText: { - fontSize: 14, + fontSize: 16, fontWeight: 'bold', color: COLORS.neutralDark, marginBottom: 2, letterSpacing: -0.2, }, roleText: { - fontSize: 7.5, + fontSize: 9, fontWeight: 'bold', color: COLORS.primary, letterSpacing: 0.5, @@ -214,12 +215,12 @@ const styles = StyleSheet.create({ alignItems: 'center', }, iconWrapper: { - width: 10, + width: 12, justifyContent: 'center', alignItems: 'flex-start', }, contactText: { - fontSize: 7.5, + fontSize: 9, color: COLORS.neutralDark, fontWeight: 'normal', paddingTop: 1, @@ -244,7 +245,7 @@ const styles = StyleSheet.create({ height: '100%', }, qrLabel: { - fontSize: 3.5, + fontSize: 5, color: COLORS.neutralDark, // Subtle grey instead of loud blue fontWeight: 'bold', letterSpacing: 1.2, @@ -253,7 +254,7 @@ const styles = StyleSheet.create({ // SVG Icons const PhoneIcon = () => ( - + ( ); const EmailIcon = () => ( - + ( ); const GlobeIcon = () => ( - + ( ); const ScanIcon = () => ( - + ( - + ( - + ( - + ( - + = ({ person, qrCodeDataUrl, - isWhiteVariant = false, + variant = 'blue', }) => { + const isWhiteVariant = variant === 'white' || variant === 'black'; + const logoWhitePath = path.join(process.cwd(), 'public', 'logo-green-text.svg'); const logoBluePath = path.join(process.cwd(), 'public', 'logo-green-text-blue.svg'); const logoBlueWithTaglinePath = path.join( @@ -617,12 +620,25 @@ export const PDFBusinessCard: React.FC = ({ 'public', 'logo-green-text-blue-with-tagline.svg', ); + const logoBlackWithTaglinePath = path.join( + process.cwd(), + 'public', + 'logo-green-text-black-with-tagline.svg', + ); const logoWhitePaths = parseSvgPaths(logoWhitePath); const logoBluePaths = parseSvgPaths(logoBluePath); const logoBlueWithTaglinePaths = parseSvgPaths(logoBlueWithTaglinePath); + const logoBlackWithTaglinePaths = parseSvgPaths(logoBlackWithTaglinePath); + + const getFrontLogoPaths = () => { + if (variant === 'black') return logoBlackWithTaglinePaths; + if (variant === 'white') return logoBlueWithTaglinePaths; + return logoWhitePaths; + }; + const bgImagePath = isWhiteVariant - ? path.join(process.cwd(), 'public', 'truck_original_rasterized.png') + ? path.join(process.cwd(), 'public', 'media', 'cable_drums_truck.png') : path.join(process.cwd(), 'public', 'cable_drums_bg.png'); return ( @@ -639,14 +655,17 @@ export const PDFBusinessCard: React.FC = ({ - VON 0,6 KV BIS 110 KV + VON 0,6/1,0 KV BIS 64/110 KV @@ -688,10 +707,7 @@ export const PDFBusinessCard: React.FC = ({ - + diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf index 39dbcc8f..b936b17d 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Black.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Black.pdf new file mode 100644 index 00000000..38a829e5 Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_Black.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_White.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_White.pdf index 61185314..7468aa71 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_White.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Johannes_Gleich_White.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf index 87835143..2c4cd860 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Black.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Black.pdf new file mode 100644 index 00000000..76db7564 Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_Black.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_White.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_White.pdf index 39e2265b..cd4886f8 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_White.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Klaus_Mintel_White.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf index c860394e..f0d86180 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Black.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Black.pdf new file mode 100644 index 00000000..4c410871 Binary files /dev/null and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_Black.pdf differ diff --git a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_White.pdf b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_White.pdf index b4a712c7..49deb6c6 100644 Binary files a/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_White.pdf and b/public/downloads/business-cards/KLZ_Visitenkarte_Michael_Bodemer_White.pdf differ diff --git a/public/logo-green-text-black-with-tagline.svg b/public/logo-green-text-black-with-tagline.svg new file mode 100644 index 00000000..cb46a83c --- /dev/null +++ b/public/logo-green-text-black-with-tagline.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/logo-green-text-blue-with-tagline.svg b/public/logo-green-text-blue-with-tagline.svg index 6ff42d85..c28f5952 100644 --- a/public/logo-green-text-blue-with-tagline.svg +++ b/public/logo-green-text-blue-with-tagline.svg @@ -11,13 +11,13 @@ - - - - - - - + + + + + + + @@ -26,6 +26,11 @@ + + + + + diff --git a/public/media/cable_drums_truck.png b/public/media/cable_drums_truck.png new file mode 100644 index 00000000..6acc4310 Binary files /dev/null and b/public/media/cable_drums_truck.png differ diff --git a/public/media/cable_drums_truck_white.png b/public/media/cable_drums_truck_white.png new file mode 100644 index 00000000..e44c53a6 Binary files /dev/null and b/public/media/cable_drums_truck_white.png differ diff --git a/scripts/generate-business-cards.ts b/scripts/generate-business-cards.ts index 089bc6d4..9d3f67d8 100644 --- a/scripts/generate-business-cards.ts +++ b/scripts/generate-business-cards.ts @@ -103,7 +103,7 @@ END:VCARD`; React.createElement(PDFBusinessCard, { person, qrCodeDataUrl, - isWhiteVariant: true, + variant: 'white', }), ); @@ -113,6 +113,27 @@ END:VCARD`; execSync(gsCommandWhite, { stdio: 'ignore' }); fs.unlinkSync(rgbPathWhite); console.log(`✓ White Variant generated: ${finalFileNameWhite}`); + + // Generate Black Variant + const finalFileNameBlack = `KLZ_Visitenkarte_${safeName}_Black.pdf`; + const rgbPathBlack = path.join(CONFIG.outputDir, `RGB_${finalFileNameBlack}`); + const finalPathBlack = path.join(CONFIG.outputDir, finalFileNameBlack); + + console.log(`- Rendering Black Variant...`); + const bufferBlack = await renderToBuffer( + React.createElement(PDFBusinessCard, { + person, + qrCodeDataUrl, + variant: 'black', + }), + ); + + fs.writeFileSync(rgbPathBlack, bufferBlack); + + const gsCommandBlack = `gs -dNoOutputFonts -sDEVICE=pdfwrite -o "${finalPathBlack}" "${rgbPathBlack}"`; + execSync(gsCommandBlack, { stdio: 'ignore' }); + fs.unlinkSync(rgbPathBlack); + console.log(`✓ Black Variant generated: ${finalFileNameBlack}`); } }