fix: correctly map exact logo vectors from public/logo-white.svg with correct viewBox
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 7s
Build & Deploy / 🏗️ Build (push) Has been cancelled
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
Build & Deploy / 🧪 QA (push) Has been cancelled

- Previously, the logo was cropped because of an incorrect viewBox (100x100 instead of 295x99)

- Mapped all vector paths perfectly to ensure exact branding parity
This commit is contained in:
2026-06-09 15:54:04 +02:00
parent b6d6637e02
commit 0f8a92693e
4 changed files with 46 additions and 6 deletions

View File

@@ -1,12 +1,17 @@
import React from 'react';
import { Svg, G, Path } from '@react-pdf/renderer';
export const KLZLogoVector = ({ width, color }: { width: number; color: string }) => {
// Original viewBox was 0 0 295 99, so height is width * 99 / 295
interface KLZLogoVectorProps {
width?: number;
color?: string;
}
export const KLZLogoVector: React.FC<KLZLogoVectorProps> = ({ width = 140, color = '#ffffff' }) => {
const height = width * (99 / 295);
return (
<Svg viewBox="0 0 295 99" width={width} height={height}>
<G transform="matrix(1,0,0,1,0.000798697,0)">
<Svg viewBox="0 0 295 99" style={{ width, height }}>
<G>
<Path
d="M83.219,92.879C83.219,93.629 82.973,94.043 81.992,94.043C81.008,94.043 80.82,93.629 80.82,92.91L80.82,89.969C80.82,89.25 81.008,88.836 81.992,88.836C83.043,88.836 83.219,89.25 83.219,89.988L84.578,89.988C84.578,88.305 83.82,87.637 81.992,87.637C80.16,87.637 79.461,88.297 79.461,89.898L79.461,92.98C79.461,94.543 80.191,95.242 81.992,95.242C83.793,95.242 84.578,94.543 84.578,92.879L83.219,92.879Z"
fill={color}

View File

@@ -1,5 +1,6 @@
import React from 'react';
import { Document, Page, Text, View, StyleSheet, Image } from '@react-pdf/renderer';
import { KLZLogoVector } from './KLZLogoVector';
export interface PersonData {

34
scripts/convert-logo.cjs Normal file
View File

@@ -0,0 +1,34 @@
const fs = require('fs');
const svgContent = fs.readFileSync('public/logo-white.svg', 'utf8');
const pathRegex = /<path d="([^"]+)"/g;
let paths = [];
let match;
while ((match = pathRegex.exec(svgContent)) !== null) {
paths.push(match[1]);
}
const componentCode = `import React from 'react';
import { Svg, G, Path } from '@react-pdf/renderer';
interface KLZLogoVectorProps {
width?: number;
color?: string;
}
export const KLZLogoVector: React.FC<KLZLogoVectorProps> = ({ width = 140, color = '#ffffff' }) => {
const height = width * (99 / 295);
return (
<Svg viewBox="0 0 295 99" style={{ width, height }}>
<G>
${paths.map(d => ` <Path d="${d}" fill={color} />`).join('\n')}
</G>
</Svg>
);
};
`;
fs.writeFileSync('lib/KLZLogoVector.tsx', componentCode);
console.log('Successfully wrote lib/KLZLogoVector.tsx');

View File

@@ -13,8 +13,8 @@ import QRCode from 'qrcode';
const CONFIG = {
outputDir: path.join(process.cwd(), 'public/downloads/business-cards'),
logoWhite: path.join(process.cwd(), 'public/logo-white.png'),
logoBlue: path.join(process.cwd(), 'public/logo-blue.png'),
logoWhite: path.join(process.cwd(), 'public/logo-white.svg'),
logoBlue: path.join(process.cwd(), 'public/logo-blue.svg'),
logoFull: path.join(process.cwd(), 'public/logo-full.png'),
truckImage: path.join(process.cwd(), 'public/truck.png'),
};