diff --git a/packages/acquisition-library/build.mjs b/packages/pdf-library/build.mjs similarity index 85% rename from packages/acquisition-library/build.mjs rename to packages/pdf-library/build.mjs index a00dafd..a7f3ca3 100644 --- a/packages/acquisition-library/build.mjs +++ b/packages/pdf-library/build.mjs @@ -6,21 +6,23 @@ import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -const entryPoint = resolve(__dirname, 'src/index.ts'); -const outfile = resolve(__dirname, 'dist/index.js'); +const entryPoints = [ + resolve(__dirname, 'src/index.ts'), + resolve(__dirname, 'src/server.ts') +]; try { - mkdirSync(dirname(outfile), { recursive: true }); + mkdirSync(resolve(__dirname, 'dist'), { recursive: true }); } catch (e) { } -console.log(`Building from ${entryPoint} to ${outfile}...`); +console.log(`Building entry points...`); build({ - entryPoints: [entryPoint], + entryPoints: entryPoints, bundle: true, platform: 'node', target: 'node18', - outfile: outfile, + outdir: resolve(__dirname, 'dist'), format: 'esm', jsx: 'automatic', loader: { diff --git a/packages/acquisition-library/package.json b/packages/pdf-library/package.json similarity index 62% rename from packages/acquisition-library/package.json rename to packages/pdf-library/package.json index a8eadb3..ca8b9b9 100644 --- a/packages/acquisition-library/package.json +++ b/packages/pdf-library/package.json @@ -1,9 +1,22 @@ { - "name": "@mintel/acquisition", + "name": "@mintel/pdf", "version": "1.7.12", "type": "module", "main": "dist/index.js", "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + }, + "./server": { + "types": "./dist/server.d.ts", + "import": "./dist/server.js", + "default": "./dist/server.js" + } + }, "scripts": { "build": "node build.mjs", "dev": "node build.mjs --watch" diff --git a/packages/pdf-library/src/components/AgbsPDF.tsx b/packages/pdf-library/src/components/AgbsPDF.tsx new file mode 100644 index 0000000..f64472b --- /dev/null +++ b/packages/pdf-library/src/components/AgbsPDF.tsx @@ -0,0 +1,241 @@ +"use client"; + +import * as React from "react"; +import { + Page as PDFPage, + Text as PDFText, + View as PDFView, + StyleSheet as PDFStyleSheet, +} from "@react-pdf/renderer"; +import { + pdfStyles, + Header, + Footer, + FoldingMarks, + DocumentTitle, +} from "./pdf/SharedUI.js"; +import { SimpleLayout } from "./pdf/SimpleLayout.js"; + +const localStyles = PDFStyleSheet.create({ + sectionContainer: { + marginTop: 0, + }, + agbSection: { + marginBottom: 20, + }, + labelRow: { + flexDirection: "row", + alignItems: "baseline", + marginBottom: 6, + }, + monoNumber: { + fontSize: 7, + fontWeight: "bold", + color: "#94a3b8", + letterSpacing: 2, + width: 25, + }, + sectionTitle: { + fontSize: 9, + fontWeight: "bold", + color: "#000000", + textTransform: "uppercase", + letterSpacing: 0.5, + }, + officialText: { + fontSize: 8, + lineHeight: 1.5, + color: "#334155", + textAlign: "justify", + paddingLeft: 25, + }, +}); + +const AGBSection = ({ + index, + title, + children, +}: { + index: string; + title: string; + children: React.ReactNode; +}) => ( + + + {index} + {title} + + {children} + +); + +interface AgbsPDFProps { + headerIcon?: string; + footerLogo?: string; + mode?: "estimation" | "full"; +} + +export const AgbsPDF = ({ + headerIcon, + footerLogo, + mode = "full", +}: AgbsPDFProps) => { + const date = new Date().toLocaleDateString("de-DE", { + year: "numeric", + month: "long", + day: "numeric", + }); + + const companyData = { + name: "Marc Mintel", + address1: "Georg-Meistermann-Straße 7", + address2: "54586 Schüller", + ustId: "DE367588065", + }; + + const bankData = { + name: "N26", + bic: "NTSBDEB1XXX", + iban: "DE50 1001 1001 2620 4328 65", + }; + + const content = ( + <> + + + + Diese Allgemeinen Geschäftsbedingungen gelten für alle Verträge + zwischen Marc Mintel (nachfolgend „Auftragnehmer“) und dem jeweiligen + Kunden (nachfolgend „Auftraggeber“). Abweichende oder ergänzende + Bedingungen des Auftraggebers werden nicht Vertragsbestandteil, auch + wenn ihrer Geltung nicht ausdrücklich widersprochen wird. + + + + Der Auftragnehmer erbringt Dienstleistungen im Bereich: + Webentwicklung, technische Umsetzung digitaler Systeme, Funktionen, + Schnittstellen und Automatisierungen sowie Hosting, Betrieb und + Wartung, sofern ausdrücklich vereinbard. Der Auftragnehmer schuldet + ausschließlich die vereinbarte technische Leistung, nicht jedoch einen + wirtschaftlichen Erfolg, bestimmte Umsätze, Conversions, Reichweiten, + Suchmaschinen-Rankings oder rechtliche Ergebnisse. + + + + Der Auftraggeber verpflichtet sich, alle zur Leistungserbringung + erforderlichen Inhalte, Informationen, Zugänge und Entscheidungen + rechtzeitig, vollständig und korrekt bereitzustellen. Hierzu zählen + insbesondere Texte, Bilder, Videos, Produktdaten, Freigaben, Feedback, + Zugangsdaten sowie rechtlich erforderliche Inhalte (z. B. Impressum, + DSGVO). Verzögerungen oder Unterlassungen führen zu Verschiebungen + aller Termine ohne Schadensersatzanspruch. + + + + Angegebene Bearbeitungszeiten sind unverbindliche Schätzungen, keine + garantierten Fristen. Fixe Termine oder Deadlines gelten nur, wenn sie + ausdrücklich schriftlich als verbindlich vereinbart wurden. + + + + Die Leistung gilt als abgenommen, wenn der Auftraggeber sie produktiv + nutzt oder innerhalb von 7 Tagen nach Bereitstellung keine + wesentlichen Mängel angezeigt werden. Optische Abweichungen, + Geschmacksfragen oder subjektive Einschätzungen stellen keine Mängel + dar. + + + + Der Auftragnehmer haftet nur für Schäden, die auf vorsätzlicher oder + grob fahrlässiger Pflichtverletzung beruhen. Eine Haftung für + entgangenen Gewinn, Umsatzausfälle, Datenverlust, + Betriebsunterbrechungen, mittelbare oder Folgeschäden ist + ausgeschlossen, soweit gesetzlich zulässig. + + + + Bei vereinbartem Hosting oder Betrieb schuldet der Auftragnehmer keine + permanente Verfügbarkeit. Wartungsarbeiten, Updates, + Sicherheitsmaßnahmen oder externe Störungen können zu zeitweisen + Einschränkungen führen und begründen keine Haftungsansprüche. + + + + Die Betriebs- und Pflegeleistung umfasst ausschließlich die + Sicherstellung des technischen Betriebs, Wartung, Updates, + Fehlerbehebung der bestehenden Systeme sowie Pflege bestehender + Datensätze ohne Strukturänderung. Nicht Bestandteil sind die + Erstellung neuer Inhalte (Blogartikel, News, Produkte), redaktionelle + Tätigkeiten, strategische Planung oder der Aufbau neuer + Features/Datenmodelle. Leistungen darüber hinaus gelten als + Neuentwicklung. + + + + Der Auftragnehmer übernimmt keine Verantwortung für Leistungen, + Ausfälle oder Änderungen externer Dienste, APIs, Schnittstellen oder + Plattformen Dritter. Eine Funktionsfähigkeit kann nur im Rahmen der + jeweils aktuellen externen Schnittstellen gewährleistet werden. + + + + Der Auftraggeber ist allein verantwortlich für Inhalte, rechtliche + Konformität (DSGVO, Urheberrecht etc.) sowie bereitgestellte Daten. + Der Auftragnehmer übernimmt keine rechtliche Prüfung. + + + + Alle Preise netto zzgl. MwSt. Rechnungen sind innerhalb von 7 Tagen + fällig. Bei Zahlungsverzug ist der Auftragnehmer berechtigt, + Leistungen auszusetzen, Systeme offline zu nehmen oder laufende + Arbeiten zu stoppen. + + + + Laufende Leistungen (z. B. Hosting & Betrieb) können mit einer Frist + von 4 Wochen zum Monatsende gekündigt werden, sofern nichts anderes + vereinbart ist. + + + + Es gilt das Recht der Bundesrepublik Deutschland. Gerichtsstand ist + der Sitz des Auftragnehmers. Sollte eine Bestimmung unwirksam sein, + bleibt die Wirksamkeit der übrigen Regelungen unberührt. + + + + ); + + if (mode === "full") { + return ( + + {content} + + ); + } + + return ( + + +
+ {content} +