diff --git a/directus/uploads/directus-health-file b/directus/uploads/directus-health-file
index 940470e..f317fd0 100644
--- a/directus/uploads/directus-health-file
+++ b/directus/uploads/directus-health-file
@@ -1 +1 @@
-53P6Y
\ No newline at end of file
+Qy-qP
\ No newline at end of file
diff --git a/packages/acquisition-library/src/components/pdf/SharedUI.tsx b/packages/acquisition-library/src/components/pdf/SharedUI.tsx
index b0ceada..a2b7a4f 100644
--- a/packages/acquisition-library/src/components/pdf/SharedUI.tsx
+++ b/packages/acquisition-library/src/components/pdf/SharedUI.tsx
@@ -29,6 +29,284 @@ export const FONT_SIZES = {
TINY: 8, // Metadata / Unit prices
};
+// Mintel Industrial Glyphs (strictly 1px stroke, 12x12px grid)
+export const IndustrialGlyph = ({
+ type,
+ color = COLORS.TEXT_LIGHT,
+ size = 12,
+}: {
+ type: string;
+ color?: string;
+ size?: number;
+}) => {
+ const stroke = 1;
+ const scale = size / 12;
+
+ switch (type) {
+ case "base": // Skeletal cube base
+ return (
+
+
+
+
+ );
+ case "pages": // Layered rectangles
+ return (
+
+
+
+
+ );
+ case "modules": // Four small squares grid
+ return (
+
+
+
+
+
+
+ );
+ case "logic": // Diamond with center point
+ return (
+
+
+
+
+ );
+ case "interface": // Three horizontal lines of varying length
+ return (
+
+
+
+
+
+ );
+ case "management": // Framed grid
+ return (
+
+
+
+
+
+ );
+ case "reveal": // Ascending bars
+ return (
+
+
+
+
+
+ );
+ case "maintenance": // Circle with vertical notch
+ return (
+
+
+
+ );
+ default:
+ return (
+
+ );
+ }
+};
+
export const pdfStyles = StyleSheet.create({
page: {
paddingTop: 45, // DIN 5008
@@ -236,6 +514,14 @@ export const Divider = ({ style = {} }: { style?: any }) => (
);
+export const FoldingMarks = () => (
+ <>
+
+
+
+ >
+);
+
export const Footer = ({
logo,
companyData,
@@ -282,6 +568,19 @@ export const Footer = ({
>
)}
+ {!showDetails && (
+
+ {showPageNumber && (
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+ )}
+
+ )}
);
@@ -399,3 +698,29 @@ export const AsymmetryView = ({
{right}
);
+
+export const IndustrialCard = ({
+ title,
+ children,
+ style = {},
+}: {
+ title: string;
+ children: React.ReactNode;
+ style?: any;
+}) => (
+
+
+ {title}
+
+ {children}
+
+);
diff --git a/packages/acquisition-library/src/components/pdf/modules/BriefingModule.tsx b/packages/acquisition-library/src/components/pdf/modules/BriefingModule.tsx
index 5a546e0..dce3589 100644
--- a/packages/acquisition-library/src/components/pdf/modules/BriefingModule.tsx
+++ b/packages/acquisition-library/src/components/pdf/modules/BriefingModule.tsx
@@ -2,68 +2,68 @@
import * as React from "react";
import {
- View as PDFView,
- Text as PDFText,
- StyleSheet,
+ View as PDFView,
+ Text as PDFText,
+ StyleSheet,
} from "@react-pdf/renderer";
-import { DocumentTitle, COLORS, FONT_SIZES } from "../SharedUI.js";
+import { DocumentTitle, COLORS, FONT_SIZES } from "../SharedUI";
const styles = StyleSheet.create({
- section: { marginBottom: 24 },
- sectionTitle: {
- fontSize: FONT_SIZES.LABEL,
- fontWeight: "bold",
- marginBottom: 8,
- color: COLORS.CHARCOAL,
- },
- visionText: {
- fontSize: FONT_SIZES.BODY,
- color: COLORS.TEXT_MAIN,
- lineHeight: 1.4,
- textAlign: "justify",
- },
+ section: { marginBottom: 24 },
+ sectionTitle: {
+ fontSize: FONT_SIZES.LABEL,
+ fontWeight: "bold",
+ marginBottom: 8,
+ color: COLORS.CHARCOAL,
+ },
+ visionText: {
+ fontSize: FONT_SIZES.BODY,
+ color: COLORS.TEXT_MAIN,
+ lineHeight: 1.4,
+ textAlign: "justify",
+ },
});
export const BriefingModule = ({ state }: any) => (
- <>
-
- {state.briefingSummary && (
-
- Briefing Analyse
-
- {state.briefingSummary}
-
-
- )}
- {state.designVision && (
-
-
- Strategische Vision
-
- {state.designVision}
-
- )}
- >
+ <>
+
+ {state.briefingSummary && (
+
+ Briefing Analyse
+
+ {state.briefingSummary}
+
+
+ )}
+ {state.designVision && (
+
+
+ Strategische Vision
+
+ {state.designVision}
+
+ )}
+ >
);
diff --git a/packages/acquisition-library/src/components/pdf/modules/SitemapModule.tsx b/packages/acquisition-library/src/components/pdf/modules/SitemapModule.tsx
index 1465fb4..45cc1f9 100644
--- a/packages/acquisition-library/src/components/pdf/modules/SitemapModule.tsx
+++ b/packages/acquisition-library/src/components/pdf/modules/SitemapModule.tsx
@@ -1,56 +1,125 @@
"use client";
import * as React from "react";
-import { View as PDFView, Text as PDFText, StyleSheet } from "@react-pdf/renderer";
-import { DocumentTitle, COLORS, FONT_SIZES, IndustrialListItem } from "../SharedUI.js";
+import {
+ View as PDFView,
+ Text as PDFText,
+ StyleSheet,
+} from "@react-pdf/renderer";
+import { DocumentTitle, COLORS, FONT_SIZES } from "../SharedUI";
const styles = StyleSheet.create({
- section: { marginBottom: 24 },
- categoryBox: {
- marginBottom: 20,
- padding: 12,
- backgroundColor: COLORS.GRID,
- borderLeftWidth: 2,
- borderLeftColor: COLORS.DIVIDER,
- },
- categoryTitle: {
- fontSize: FONT_SIZES.TINY,
- fontWeight: "bold",
- color: COLORS.TEXT_LIGHT,
- textTransform: "uppercase",
- marginBottom: 10,
- letterSpacing: 1,
- },
- pageTitle: {
- fontSize: FONT_SIZES.LABEL,
- fontWeight: "bold",
- color: COLORS.CHARCOAL,
- marginBottom: 2,
- },
- pageDesc: {
- fontSize: FONT_SIZES.TINY,
- color: COLORS.TEXT_DIM,
- lineHeight: 1.4,
- },
+ section: { marginBottom: 32 },
+ intro: {
+ fontSize: FONT_SIZES.BODY,
+ color: COLORS.TEXT_DIM,
+ lineHeight: 1.4,
+ marginBottom: 24,
+ textAlign: "justify",
+ },
+ sitemapTree: { marginTop: 8 },
+ rootNode: {
+ padding: 12,
+ backgroundColor: COLORS.GRID,
+ marginBottom: 20,
+ borderLeftWidth: 2,
+ borderLeftColor: COLORS.CHARCOAL,
+ },
+ rootTitle: {
+ fontSize: FONT_SIZES.HEADING,
+ fontWeight: "bold",
+ color: COLORS.CHARCOAL,
+ letterSpacing: 0.5,
+ },
+ categorySection: { marginBottom: 20 },
+ categoryHeader: {
+ flexDirection: "row",
+ alignItems: "center",
+ paddingBottom: 6,
+ borderBottomWidth: 1,
+ borderBottomColor: COLORS.BLUEPRINT,
+ marginBottom: 10,
+ },
+ categoryIcon: {
+ width: 8,
+ height: 8,
+ backgroundColor: COLORS.GRID,
+ borderInlineWidth: 1,
+ borderColor: COLORS.DIVIDER,
+ marginRight: 10,
+ },
+ categoryTitle: {
+ fontSize: FONT_SIZES.BODY,
+ fontWeight: "bold",
+ color: COLORS.CHARCOAL,
+ textTransform: "uppercase",
+ letterSpacing: 1,
+ },
+ pagesGrid: { flexDirection: "row", flexWrap: "wrap" },
+ pageCard: {
+ width: "48%",
+ marginRight: "2%",
+ marginBottom: 12,
+ padding: 10,
+ borderWidth: 1,
+ borderColor: COLORS.GRID,
+ backgroundColor: "#fafafa",
+ },
+ pageTitle: {
+ fontSize: FONT_SIZES.BODY,
+ fontWeight: "bold",
+ color: COLORS.TEXT_MAIN,
+ marginBottom: 4,
+ },
+ pageDesc: {
+ fontSize: FONT_SIZES.TINY,
+ color: COLORS.TEXT_DIM,
+ lineHeight: 1.3,
+ },
});
export const SitemapModule = ({ state }: any) => (
- <>
-
-
- {state.sitemap?.map((cat: any, i: number) => (
-
- {cat.category}
- {cat.pages?.map((p: any, j: number) => (
-
-
- {p.title}
- {p.desc}
-
-
- ))}
-
- ))}
+ <>
+
+
+
+ Die folgende Struktur definiert die logische Hierarchie und
+ Benutzerführung. Sie dient als Bauplan für die technische Umsetzung und
+ stellt sicher, dass alle relevanten Geschäftsbereiche intuitiv
+ auffindbar sind.
+
+
+
+
+ Seitenstruktur
- >
+
+ {state.sitemap?.map((cat: any, i: number) => (
+
+
+
+ {cat.category}
+
+
+
+ {cat.pages.map((p: any, j: number) => (
+
+ {p.title}
+ {p.desc && (
+ {p.desc}
+ )}
+
+ ))}
+
+
+ ))}
+
+
+ >
);