'use client' import { useMemo } from 'react' import type { FoundingWizardState, GeneratedDocument } from '@/lib/sdk/founding/types' import { NOTARY_BUNDLE_DOCUMENTS } from '@/lib/sdk/founding/template-categories' interface Props { state: FoundingWizardState update: (k: K, v: FoundingWizardState[K]) => void generating: boolean error: string | null onGenerate: () => Promise } const DOC_LABELS: Record = { articles_of_association: 'Satzung', gesellschafterliste: 'Gesellschafterliste (§ 40 GmbHG)', gf_bestellungsbeschluss: 'Gesellschafterbeschluss zur GF-Bestellung', hrb_anmeldung: 'Handelsregister-Anmeldung', sha: 'Shareholders\' Agreement (SHA)', geschaeftsordnung_gf: 'Geschäftsordnung Geschäftsführung (GO-GF)', managing_director_employment_contract: 'GF-Dienstvertrag (pro GF)', ip_assignment_agreement: 'IP-Assignment (pro Gründer)', term_sheet: 'Term Sheet', convertible_loan_agreement: 'Wandeldarlehensvertrag', subscription_agreement: 'Beteiligungsvertrag', esop_plan: 'ESOP/VSOP-Plan', cap_table: 'Cap Table', } export function StepGenerate({ state, update, generating, error, onGenerate }: Props) { const toggleDoc = (docType: string) => { const next = state.selected_documents.includes(docType) ? state.selected_documents.filter(d => d !== docType) : [...state.selected_documents, docType] update('selected_documents', next) } const selectNotaryBundle = () => { update('selected_documents', [...NOTARY_BUNDLE_DOCUMENTS]) } const summary = useMemo(() => ({ name: state.basics.company_name, seat: state.basics.company_seat, stammkapital: state.capital.stammkapital_eur, num_gesellschafter: state.gesellschafter.length, num_gf: state.gesellschafter.filter(g => g.is_geschaeftsfuehrer).length, }), [state]) return (

Zusammenfassung

Firma:
{summary.name} ({state.basics.legal_form})
Sitz:
{summary.seat}
Stammkapital:
{summary.stammkapital.toLocaleString('de-DE')} €
Gesellschafter:
{summary.num_gesellschafter}
Geschäftsführer:
{summary.num_gf}
Notar:
{state.notar.notary_name} ({state.notar.notary_place})

Zu generierende Dokumente

{Object.entries(DOC_LABELS).map(([docType, label]) => ( ))}

{state.selected_documents.length} Dokument(e) ausgewählt

{error && (
Fehler: {error}
)} {state.generated_documents && state.generated_documents.length > 0 && (

✓ {state.generated_documents.length} Dokument(e) generiert

    {state.generated_documents.map((doc, idx) => (
  • {doc.title}
    {(doc.size_bytes / 1024).toFixed(1)} KB
    Word herunterladen
  • ))}
)}
) }