'use client' import React from 'react' import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader' import { EvidenceCard } from './_components/EvidenceCard' import { LoadingSkeleton } from './_components/LoadingSkeleton' import { ReviewModal } from './_components/ReviewModal' import { RejectModal } from './_components/RejectModal' import { AuditTrailPanel } from './_components/AuditTrailPanel' import { ChecksTab } from './_components/ChecksTab' import { MappingTab } from './_components/MappingTab' import { ReportTab } from './_components/ReportTab' import { confidenceFilterColors } from './_components/EvidenceTypes' import { useEvidence } from './_hooks/useEvidence' const evidenceTabs = [ { key: 'evidence' as const, label: 'Nachweise' }, { key: 'checks' as const, label: 'Automatische Checks' }, { key: 'mapping' as const, label: 'Control-Mapping' }, { key: 'report' as const, label: 'Report' }, ] export default function EvidencePage() { const ev = useEvidence() const stepInfo = STEP_EXPLANATIONS['evidence'] return (
{evidenceTabs.map(tab => ( ))}
{ev.error && (
{ev.error}
)} {ev.activeTab === 'evidence' && ( <> {ev.state.controls.length === 0 && !ev.loading && (

Keine Kontrollen definiert

Bitte definieren Sie zuerst Kontrollen, um die zugehoerigen Nachweise zu laden.

)}
Gesamt
{ev.displayEvidence.length}
Gueltig
{ev.validCount}
Abgelaufen
{ev.expiredCount}
Pruefung ausstehend
{ev.pendingCount}
Filter: {['all', 'valid', 'expired', 'pending-review', 'document', 'certificate', 'audit-report'].map(f => ( ))} | {['E0', 'E1', 'E2', 'E3', 'E4'].map(level => ( ))}
{ev.loading && } {!ev.loading && (
{ev.filteredEvidence.map(e => ( ev.handleDelete(e.id)} onView={() => ev.handleView(e)} onDownload={() => ev.handleDownload(e)} onReview={() => ev.setReviewEvidence(e)} onReject={() => ev.setRejectEvidence(e)} onShowHistory={() => ev.setAuditTrailId(e.id)} /> ))}
)} {!ev.loading && ev.total > ev.pageSize && (
Zeige {((ev.page - 1) * ev.pageSize) + 1}–{Math.min(ev.page * ev.pageSize, ev.total)} von {ev.total} Nachweisen
Seite {ev.page} von {Math.ceil(ev.total / ev.pageSize)}
)} {!ev.loading && ev.filteredEvidence.length === 0 && ev.state.controls.length > 0 && (

Keine Nachweise gefunden

Passen Sie den Filter an oder laden Sie neue Nachweise hoch.

)} )} {ev.activeTab === 'checks' && ( )} {ev.activeTab === 'mapping' && ( )} {ev.activeTab === 'report' && ( )} {ev.reviewEvidence && ( ev.setReviewEvidence(null)} onSuccess={() => { ev.setReviewEvidence(null); ev.setRefreshKey(k => k + 1) }} /> )} {ev.rejectEvidence && ( ev.setRejectEvidence(null)} onSuccess={() => { ev.setRejectEvidence(null); ev.setRefreshKey(k => k + 1) }} /> )} {ev.auditTrailId && ( ev.setAuditTrailId(null)} /> )}
) }