'use client' import { useMemo, useState } from 'react' import { useSDK } from '@/lib/sdk' import { evaluateTemplateRecommendations, type TemplateRecommendation } from '../templateRecommendations' import { getProfileLabel } from '../scopeDefaults' import type { LegalTemplateResult } from '@/lib/sdk/types' import type { ComplianceDepthLevel } from '@/lib/sdk/compliance-scope-types/core-levels' interface Props { allTemplates: LegalTemplateResult[] onUseTemplate: (t: LegalTemplateResult) => void } export default function RecommendedDocuments({ allTemplates, onUseTemplate }: Props) { const { state } = useSDK() const [showOptional, setShowOptional] = useState(false) const level = state?.complianceScope?.determinedLevel as ComplianceDepthLevel | undefined const scopeAnswers = state?.complianceScope?.answers || [] const recommendations = useMemo(() => { if (!level) return null return evaluateTemplateRecommendations( scopeAnswers, level, (state?.companyProfile as Record) || {}, ) }, [level, scopeAnswers, state?.companyProfile]) if (!level || !recommendations || recommendations.length === 0) return null // Match recommendations to actual templates in the library const templateMap = new Map() for (const t of allTemplates) { if (t.templateType) templateMap.set(t.templateType, t) } const required = recommendations.filter((r) => r.requirement === 'required') const recommended = recommendations.filter((r) => r.requirement === 'recommended') const optional = recommendations.filter((r) => r.requirement === 'optional') const renderCard = (rec: TemplateRecommendation) => { const template = templateMap.get(rec.templateType) const exists = !!template return (
exists && template && onUseTemplate(template)} >
{rec.label}
{exists ? ( Vorlage verfuegbar ) : ( Noch nicht erstellt )}
) } return (

Empfohlene Dokumente fuer Ihr Unternehmen

Basierend auf Ihrem Compliance-Profil ({getProfileLabel(level)})

{level}
{/* Required */} {required.length > 0 && (
Pflicht ({required.length})
{required.map(renderCard)}
)} {/* Recommended */} {recommended.length > 0 && (
Empfohlen ({recommended.length})
{recommended.map(renderCard)}
)} {/* Optional (collapsed by default) */} {optional.length > 0 && (
{showOptional && (
{optional.map(renderCard)}
)}
)}
) }