fix(pdf): increase role text spacing and link agbs pdf directly to static file
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 10s
Build & Deploy / 🧪 QA (push) Failing after 1m20s
Build & Deploy / 🏗️ Build (push) Has been skipped
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 3s

This commit is contained in:
2026-06-12 14:11:46 +02:00
parent d7178a9100
commit a6ba484faa
16 changed files with 49 additions and 7 deletions

View File

@@ -3,7 +3,11 @@
import React from 'react'; import React from 'react';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
export const PDFDownloadBlock: React.FC<{ label: string; style: string }> = ({ label, style }) => { export const PDFDownloadBlock: React.FC<{ label: string; style: string; url?: string }> = ({
label,
style,
url,
}) => {
const pathname = usePathname(); const pathname = usePathname();
// Extract slug from pathname // Extract slug from pathname
@@ -12,7 +16,7 @@ export const PDFDownloadBlock: React.FC<{ label: string; style: string }> = ({ l
// We want the page slug. // We want the page slug.
const slug = segments[segments.length - 1] || 'home'; const slug = segments[segments.length - 1] || 'home';
const href = `/api/pages/${slug}/pdf`; const href = url || `/api/pages/${slug}/pdf`;
return ( return (
<div className="my-8"> <div className="my-8">

View File

@@ -247,7 +247,7 @@ _status: published
Stand: April 2026 Stand: April 2026
<Block type="pdfDownload" data={{"id":"69a9b09ea220fecfb9d54bb8","label":"Als PDF herunterladen","style":"primary","blockName":"","blockType":"pdfDownload"}} /> <Block type="pdfDownload" data={{"id":"69a9b09ea220fecfb9d54bb8","label":"Als PDF herunterladen","style":"primary","url":"/AVB-KLZ-4-2026.pdf","blockName":"","blockType":"pdfDownload"}} />
<Block type="agbHistory" data={{"id":"69a9b09ea220fecfb9d54bb9","blockName":"AGB History","blockType":"agbHistory","title":"Vorherige Versionen"}} /> <Block type="agbHistory" data={{"id":"69a9b09ea220fecfb9d54bb9","blockName":"AGB History","blockType":"agbHistory","title":"Vorherige Versionen"}} />

View File

@@ -302,7 +302,7 @@ const styles = StyleSheet.create({
flexDirection: 'column', flexDirection: 'column',
}, },
nameSection: { nameSection: {
marginBottom: '2.5mm', // Clear separation between name block and contact block marginBottom: '6mm', // Clear separation between name block and contact block
}, },
nameText: { nameText: {
fontSize: 13, fontSize: 13,

View File

@@ -329,6 +329,42 @@ const renderLexicalNode = (node: any, idx: number): React.ReactNode => {
} }
}; };
const renderMarkdown = (markdown: string) => {
const blocks = markdown.split('\n\n').filter((b) => b.trim());
return blocks.map((block, idx) => {
if (block.startsWith('### ')) {
return (
<Text key={idx} style={styles.heading3} wrap={false} minPresenceAhead={100}>
{block.replace('### ', '').trim()}
</Text>
);
}
if (block.startsWith('## ')) {
return (
<Text key={idx} style={styles.heading2} wrap={false} minPresenceAhead={100}>
{block.replace('## ', '').trim()}
</Text>
);
}
if (block.startsWith('# ')) {
return (
<View key={idx} style={styles.heading1Wrapper} wrap={false} minPresenceAhead={100}>
<Text style={styles.heading1}>{block.replace('# ', '').trim()}</Text>
</View>
);
}
// Ignore block components like <Block ... />
if (block.startsWith('<Block')) return null;
return (
<Text key={idx} style={styles.paragraph} minPresenceAhead={15}>
{block.trim()}
</Text>
);
});
};
interface PDFPageProps { interface PDFPageProps {
page: any; page: any;
locale?: string; locale?: string;
@@ -360,9 +396,11 @@ export const PDFPage: React.FC<PDFPageProps> = ({ page, locale = 'de' }) => {
<View style={styles.content}> <View style={styles.content}>
<View> <View>
{page.content?.root?.children?.map((node: any, i: number) => {typeof page.content === 'string'
renderLexicalNode(node, i), ? renderMarkdown(page.content)
)} : page.content?.root?.children?.map((node: any, i: number) =>
renderLexicalNode(node, i),
)}
</View> </View>
</View> </View>