'use client';
import * as React from 'react';
import { calculatePositions } from '../logic/pricing';
import { Page as PDFPage } from '@react-pdf/renderer';
import { pdfStyles } from './pdf/SharedUI';
import { DINLayout } from './pdf/DINLayout';
import { SimpleLayout } from './pdf/SimpleLayout';
// Modules
import { FrontPageModule } from './pdf/modules/FrontPageModule';
import { BriefingModule } from './pdf/modules/BriefingModule';
import { SitemapModule } from './pdf/modules/SitemapModule';
import { EstimationModule } from './pdf/modules/EstimationModule';
import { TransparenzModule, techPageModule as TechPageModule, PrinciplesModule } from './pdf/modules/CommonModules';
import { AboutModule, CrossSellModule } from './pdf/modules/BrandingModules';
interface PDFProps {
state: any;
totalPrice: number;
monthlyPrice: number;
totalPagesCount: number;
pricing: any;
mode?: 'estimation' | 'full';
headerIcon?: string;
footerLogo?: string;
techDetails?: { t: string, d: string }[];
principles?: { t: string, d: string }[];
}
export const EstimationPDF = ({
state,
totalPrice,
pricing,
mode = 'full',
headerIcon,
footerLogo,
techDetails,
principles,
...props
}: PDFProps) => {
const date = new Date().toLocaleDateString('de-DE', {
year: 'numeric',
month: 'long',
day: 'numeric',
});
const positions = calculatePositions(state, pricing);
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 commonProps = {
state,
date,
icon: headerIcon,
footerLogo,
companyData,
bankData
};
if (mode === 'estimation') {
return (
);
}
// Full Portfolio Mode
let pageCounter = 1;
const getPageNum = () => (pageCounter++).toString().padStart(2, '0');
return (
<>
{state.sitemap && state.sitemap.length > 0 && (
)}
{techDetails && techDetails.length > 0 && (
)}
{principles && principles.length > 0 && (
)}
>
);
};