import { Download } from "lucide-react"; import fs from "fs"; import path from "path"; 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 const rawBlocks = fileContent .split(/\n\s*\n/) .map((b) => b.trim()) .filter((b) => b !== ""); // Extract title and stand more robustly const title = rawBlocks.find(b => b.startsWith("# "))?.replace(/^#\s+/, "") || "Allgemeine Verkaufsbedingungen"; const stand = rawBlocks.find(b => b.toLowerCase().startsWith("stand:")) || "Stand: April 2026"; const sections: { title: string; content: string[] }[] = []; let currentSection: { title: string; content: string[] } | null = null; // Process sections, skipping title and stand blocks rawBlocks.forEach((block) => { if (block.startsWith("# ") || block.toLowerCase().startsWith("stand:")) return; if (block.startsWith("##")) { // New section header: e.g. "## 1. Geltungsbereich" if (currentSection) sections.push(currentSection); currentSection = { title: block.replace(/^##\s+/, "").trim(), content: [] }; } else if (currentSection) { // Clean up bold markers for better display const cleanedBlock = block.replace(/\*\*(.*?)\*\*/g, "$1"); currentSection.content.push(cleanedBlock); } }); if (currentSection) sections.push(currentSection); // 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 (
{stand}
{stand}
{paragraph.split(/(\[.*?\]\(.*?\))/g).map((part, i) => { const match = part.match(/\[(.*?)\]\((.*?)\)/); if (match) { return ( {match[1]} ); } return part; })}
))}{footer}