'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}
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)} />
)}
)
}