diff --git a/app/[locale]/agb/page.tsx b/app/[locale]/agb/page.tsx index 188d3c4..75af535 100644 --- a/app/[locale]/agb/page.tsx +++ b/app/[locale]/agb/page.tsx @@ -6,61 +6,41 @@ export default function AVB() { const filePath = path.join(process.cwd(), "context/avbs.md"); const fileContent = fs.readFileSync(filePath, "utf8"); - // Split by double newlines to get major blocks (headers + their first paragraphs, or subsequent paragraphs) - const blocks = fileContent + // Split by double newlines to get major blocks + const rawBlocks = fileContent .split(/\n\s*\n/) .map((b) => b.trim()) .filter((b) => b !== ""); - const title = blocks[0] || "Liefer- und Zahlungsbedingungen"; - const stand = blocks[1] || "Stand Januar 2026"; + const title = rawBlocks[0]?.replace(/^#\s+/, "") || "Allgemeine Verkaufsbedingungen"; + const stand = rawBlocks[1] || "Stand: April 2026"; const sections: { title: string; content: string[] }[] = []; let currentSection: { title: string; content: string[] } | null = null; // Skip title and stand - blocks.slice(2).forEach((block) => { - const lines = block - .split("\n") - .map((l) => l.trim()) - .filter((l) => l !== ""); - if (lines.length === 0) return; - - const firstLine = lines[0]; - - if (/^\d+\./.test(firstLine)) { - // New section + rawBlocks.slice(2).forEach((block) => { + if (block.startsWith("##")) { + // New section header: e.g. "## 1. Geltungsbereich" if (currentSection) sections.push(currentSection); - - currentSection = { title: firstLine, content: [] }; - - // If there are more lines in this block, they form the first paragraph(s) - if (lines.length > 1) { - // Join subsequent lines as they might be part of the same paragraph - // In this MD, we'll assume lines in the same block belong together - // unless they are clearly separate paragraphs (but we already split by double newline) - const remainingText = lines.slice(1).join(" "); - if (remainingText) currentSection.content.push(remainingText); - } + currentSection = { + title: block.replace(/^##\s+/, "").trim(), + content: [] + }; } else if (currentSection) { - // Continuation of current section - const blockText = lines.join(" "); - if (blockText) currentSection.content.push(blockText); + // Content block: might be multiple paragraphs if not split by double newline, + // but here each block is one "paragraph" due to our split logic. + // We clean up bold markers for better display if they are just numbering. + const cleanedBlock = block.replace(/\*\*(.*?)\*\*/g, "$1"); + currentSection.content.push(cleanedBlock); } }); if (currentSection) sections.push(currentSection); - // The last block is the footer - const footer = blocks[blocks.length - 1]; - if (sections.length > 0) { - const lastSection = sections[sections.length - 1]; - if (lastSection.content.includes(footer) || lastSection.title === footer) { - lastSection.content = lastSection.content.filter((c) => c !== footer); - if (sections[sections.length - 1].title === footer) { - sections.pop(); - } - } - } + // The very last block might be a footer/schlussbestimmung if it's not in a section + // In our MD, everything is in a section, so we just use the last block of the last section as potential footer if we want, + // but the current UI expects a separate 'footer' variable. + const footer = "MB Grid Solutions & Services"; return (