feat(pitch-deck): legal disclaimer slide + projection footer on financial slides

New DisclaimerSlide (last slide):
- Full liability disclaimer (German/English)
- Confidentiality clause (purpose limitation, 3yr duration, Konstanz jurisdiction)
- Status as private individual in founding preparation

ProjectionFooter component on 4 financial slides:
- FinancialsSlide, TheAskSlide, FinanzplanSlide, CapTableSlide
- "Alle Finanzdaten sind Planzahlen" disclaimer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-15 18:00:08 +02:00
parent 6b52719079
commit 9736476a0c
10 changed files with 138 additions and 5 deletions

View File

@@ -42,6 +42,7 @@ import RegulatorySlide from './slides/RegulatorySlide'
import EngineeringSlide from './slides/EngineeringSlide'
import AIPipelineSlide from './slides/AIPipelineSlide'
import USPSlide from './slides/USPSlide'
import DisclaimerSlide from './slides/DisclaimerSlide'
import ExecutiveSummarySlide from './slides/ExecutiveSummarySlide'
import RegulatoryLandscapeSlide from './slides/RegulatoryLandscapeSlide'
import CapTableSlide from './slides/CapTableSlide'
@@ -197,6 +198,8 @@ export default function PitchDeck({ lang, onToggleLanguage, investor, onLogout,
return <FinanzplanSlide lang={lang} />
case 'annex-glossary':
return <GlossarySlide lang={lang} />
case 'legal-disclaimer':
return <DisclaimerSlide lang={lang} />
default:
return null
}

View File

@@ -1,6 +1,7 @@
'use client'
import { Language } from '@/lib/types'
import ProjectionFooter from '../ui/ProjectionFooter'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import GlassCard from '../ui/GlassCard'
@@ -212,6 +213,7 @@ export default function CapTableSlide({ lang }: CapTableSlideProps) {
</GlassCard>
</FadeInView>
</div>
<ProjectionFooter lang={lang} />
</div>
)
}

View File

@@ -0,0 +1,103 @@
'use client'
import { Language } from '@/lib/types'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import { Shield, Lock } from 'lucide-react'
interface DisclaimerSlideProps {
lang: Language
}
export default function DisclaimerSlide({ lang }: DisclaimerSlideProps) {
const de = lang === 'de'
return (
<div className="max-w-4xl mx-auto">
<FadeInView className="text-center mb-6">
<h2 className="text-3xl md:text-4xl font-bold mb-2">
<GradientText>{de ? 'Rechtlicher Hinweis' : 'Legal Notice'}</GradientText>
</h2>
</FadeInView>
<div className="space-y-4 max-h-[70vh] overflow-y-auto pr-2">
{/* Disclaimer */}
<FadeInView delay={0.1}>
<div className="bg-white/[0.03] border border-white/[0.06] rounded-xl p-5">
<div className="flex items-center gap-2 mb-3">
<Shield className="w-4 h-4 text-indigo-400" />
<h3 className="text-sm font-bold text-indigo-400 uppercase tracking-wider">
{de ? 'Haftungsausschluss' : 'Disclaimer'}
</h3>
</div>
<div className="space-y-3 text-xs text-white/40 leading-relaxed">
<p>
{de
? 'Dieses Dokument wird vorgelegt von Benjamin Boenisch, wohnhaft in Konstanz, Deutschland (nachfolgend „Gründer"). Der Gründer beabsichtigt die Gründung der BreakPilot GmbH im dritten Quartal 2026. Zum Zeitpunkt der Erstellung dieses Dokuments ist die Gesellschaft weder gegründet noch im Handelsregister eingetragen. Der Gründer handelt ausschließlich als Privatperson im Rahmen der Gründungsvorbereitung.'
: 'This document is presented by Benjamin Boenisch, residing in Konstanz, Germany (hereinafter "Founder"). The Founder intends to establish BreakPilot GmbH in Q3 2026. At the time of this document, the company is neither founded nor registered in the commercial register. The Founder acts exclusively as a private individual in preparation of the founding.'}
</p>
<p>
{de
? 'Dieses Dokument stellt weder ein Angebot zum Verkauf noch eine Aufforderung zur Abgabe eines Angebots zum Erwerb von Wertpapieren, Gesellschaftsanteilen oder sonstigen Vermögensanlagen dar. Es handelt sich nicht um einen Wertpapierprospekt im Sinne des VermAnlG oder der EU-Prospektverordnung. Jede etwaige künftige Beteiligung begründet sich ausschließlich auf gesonderten, rechtlich geprüften Beteiligungsverträgen.'
: 'This document constitutes neither an offer to sell nor a solicitation of an offer to acquire securities, company shares or other financial instruments. It is not a securities prospectus within the meaning of the VermAnlG or the EU Prospectus Regulation. Any future participation shall be based exclusively on separate, legally reviewed participation agreements.'}
</p>
<p>
{de
? 'Dieses Dokument enthält zukunftsgerichtete Aussagen, die auf gegenwärtigen Erwartungen und Annahmen beruhen. Solche Aussagen beinhalten Risiken und Ungewissheiten, die dazu führen können, dass tatsächliche Ergebnisse wesentlich von den dargestellten Erwartungen abweichen. Sämtliche Finanzangaben in dieser Präsentation sind Planzahlen und stellen keine Garantie für künftige Ergebnisse dar.'
: 'This document contains forward-looking statements based on current expectations and assumptions. Such statements involve risks and uncertainties that may cause actual results to differ materially from stated expectations. All financial figures in this presentation are projections and do not constitute a guarantee of future results.'}
</p>
<p>
{de
? 'Sämtliche Angaben wurden mit Sorgfalt zusammengestellt, erheben jedoch keinen Anspruch auf Vollständigkeit oder Richtigkeit. Der Gründer übernimmt keine Haftung für die Aktualität, Korrektheit oder Vollständigkeit der Informationen, sofern kein vorsätzliches oder grob fahrlässiges Verschulden vorliegt. Eine Beteiligung an einem jungen Unternehmen ist mit erheblichen Risiken verbunden, einschließlich des Risikos eines Totalverlusts des eingesetzten Kapitals.'
: 'All information has been compiled with care but makes no claim to completeness or accuracy. The Founder assumes no liability for the timeliness, correctness or completeness of the information, unless there is intentional or grossly negligent fault. An investment in a young company involves significant risks, including the risk of total loss of invested capital.'}
</p>
</div>
</div>
</FadeInView>
{/* Confidentiality */}
<FadeInView delay={0.2}>
<div className="bg-white/[0.03] border border-white/[0.06] rounded-xl p-5">
<div className="flex items-center gap-2 mb-3">
<Lock className="w-4 h-4 text-purple-400" />
<h3 className="text-sm font-bold text-purple-400 uppercase tracking-wider">
{de ? 'Vertraulichkeit' : 'Confidentiality'}
</h3>
</div>
<div className="space-y-3 text-xs text-white/40 leading-relaxed">
<p>
{de
? 'Dieses Dokument ist vertraulich und wurde ausschließlich für den namentlich eingeladenen Empfänger erstellt. Durch die Kenntnisnahme erklärt sich der Empfänger mit folgenden Bedingungen einverstanden:'
: 'This document is confidential and has been prepared exclusively for the personally invited recipient. By accessing this document, the recipient agrees to the following terms:'}
</p>
<p>
{de
? '(a) Geheimhaltung — Der Empfänger verpflichtet sich, den Inhalt vertraulich zu behandeln und nicht an Dritte weiterzugeben, zu kopieren oder zugänglich zu machen. Ausgenommen sind Berater (Rechtsanwälte, Steuerberater), die berufsrechtlich zur Verschwiegenheit verpflichtet sind.'
: '(a) Confidentiality — The recipient undertakes to treat the content confidentially and not to disclose, copy or make it accessible to third parties. Excluded are advisors (lawyers, tax advisors) who are professionally bound to secrecy.'}
</p>
<p>
{de
? '(b) Zweckbindung — Die Informationen dürfen ausschließlich zur Bewertung einer möglichen Beteiligung verwendet werden. Jede anderweitige Nutzung ist untersagt.'
: '(b) Purpose limitation — The information may only be used for the purpose of evaluating a possible participation. Any other use is prohibited.'}
</p>
<p>
{de
? '(c) Geltungsdauer — Diese Vertraulichkeitsverpflichtung gilt für drei (3) Jahre ab Übermittlung, unabhängig davon, ob eine Beteiligung zustande kommt. Es gilt deutsches Recht. Gerichtsstand ist Konstanz, Deutschland.'
: '(c) Duration — This confidentiality obligation applies for three (3) years from transmission, regardless of whether a participation materializes. German law applies. Place of jurisdiction is Konstanz, Germany.'}
</p>
</div>
</div>
</FadeInView>
<FadeInView delay={0.3}>
<p className="text-center text-[10px] text-white/20">
{de ? 'Stand: April 2026 · Dieser Hinweis ersetzt keine Rechtsberatung.' : 'As of: April 2026 · This notice does not replace legal advice.'}
</p>
</FadeInView>
</div>
</div>
)
}

View File

@@ -3,6 +3,7 @@
import { useState } from 'react'
import { Language } from '@/lib/types'
import { t } from '@/lib/i18n'
import ProjectionFooter from '../ui/ProjectionFooter'
import { useFinancialModel } from '@/lib/hooks/useFinancialModel'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
@@ -293,6 +294,7 @@ export default function FinancialsSlide({ lang, investorId }: FinancialsSlidePro
</FadeInView>
</div>
</div>
<ProjectionFooter lang={lang} />
</div>
)
}

View File

@@ -3,6 +3,7 @@
import { useCallback, useEffect, useState } from 'react'
import { Language } from '@/lib/types'
import { t } from '@/lib/i18n'
import ProjectionFooter from '../ui/ProjectionFooter'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import GlassCard from '../ui/GlassCard'
@@ -513,11 +514,7 @@ export default function FinanzplanSlide({ lang }: FinanzplanSlideProps) {
</GlassCard>
)}
<p className="text-center text-[9px] text-white/40 mt-2">
{de
? 'Doppelklick auf blaue Zellen zum Bearbeiten · Gründung: 01.08.2026'
: 'Double-click blue cells to edit · Founding: 01.08.2026'}
</p>
<ProjectionFooter lang={lang} />
</div>
)
}

View File

@@ -3,6 +3,7 @@
import { motion } from 'framer-motion'
import { Language, PitchFunding } from '@/lib/types'
import { t } from '@/lib/i18n'
import ProjectionFooter from '../ui/ProjectionFooter'
import GradientText from '../ui/GradientText'
import FadeInView from '../ui/FadeInView'
import AnimatedCounter from '../ui/AnimatedCounter'
@@ -147,6 +148,7 @@ export default function TheAskSlide({ lang, funding }: TheAskSlideProps) {
</div>
</GlassCard>
</FadeInView>
<ProjectionFooter lang={lang} />
</div>
)
}

View File

@@ -0,0 +1,20 @@
'use client'
import { Language } from '@/lib/types'
interface ProjectionFooterProps {
lang: Language
}
export default function ProjectionFooter({ lang }: ProjectionFooterProps) {
const de = lang === 'de'
return (
<div className="mt-3 pt-2 border-t border-white/5">
<p className="text-[9px] text-white/20 text-center italic">
{de
? 'Alle Finanzdaten sind Planzahlen und stellen keine Garantie für künftige Ergebnisse dar (Stand: Q2 2026)'
: 'All financial data are projections and do not constitute a guarantee of future results (as of: Q2 2026)'}
</p>
</div>
)
}

View File

@@ -37,6 +37,7 @@ const translations = {
'Anhang: Strategie',
'Anhang: Finanzplan',
'Glossar',
'Rechtlicher Hinweis',
],
executiveSummary: {
title: 'Executive Summary',
@@ -333,6 +334,7 @@ const translations = {
'Appendix: Strategy',
'Appendix: Financial Plan',
'Glossary',
'Legal Notice',
],
executiveSummary: {
title: 'Executive Summary',

View File

@@ -30,6 +30,7 @@ export const SLIDE_ORDER: SlideId[] = [
'annex-strategy',
'annex-finanzplan',
'annex-glossary',
'legal-disclaimer',
]
export const TOTAL_SLIDES = SLIDE_ORDER.length

View File

@@ -251,3 +251,4 @@ export type SlideId =
| 'annex-strategy'
| 'annex-finanzplan'
| 'annex-glossary'
| 'legal-disclaimer'