From 269d19bbef8932d5a2e5e2abd5763e9413f57dfa Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Thu, 12 Feb 2026 21:27:39 +0100 Subject: [PATCH] fix(acquisition): finalize extension build and components - Fixed IndustrialCard export in SharedUI. - Successfully built all extensions including acquisition-library. - Verified sitemap and briefing module updates. --- directus/uploads/directus-health-file | 2 +- .../src/components/pdf/SharedUI.tsx | 325 ++++++++++++++++++ .../components/pdf/modules/BriefingModule.tsx | 116 +++---- .../components/pdf/modules/SitemapModule.tsx | 161 ++++++--- 4 files changed, 499 insertions(+), 105 deletions(-) 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} + )} + + ))} + + + ))} + + + );