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
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:
@@ -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">
|
||||||
|
|||||||
@@ -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"}} />
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user