'use client' import { useState, useEffect } from 'react' import { Shield, FileText } from 'lucide-react' import Link from 'next/link' import { PROVENANCE_SECTIONS } from './_data/provenance-sections' import { MarkdownRenderer } from './_components/MarkdownRenderer' import { LicenseMatrix } from './_components/LicenseMatrix' import { SourceRegistry } from './_components/SourceRegistry' interface LicenseInfo { license_id: string; name: string; terms_url: string | null; commercial_use: string ai_training_restriction: string | null; tdm_allowed_under_44b: string | null deletion_required: boolean; notes: string | null } interface SourceInfo { source_id: string; title: string; publisher: string; url: string | null version_label: string | null; language: string; license_id: string; license_name: string commercial_use: string; allowed_analysis: boolean; allowed_store_excerpt: boolean allowed_ship_embeddings: boolean; allowed_ship_in_product: boolean vault_retention_days: number; vault_access_tier: string } export default function ControlProvenancePage() { const [licenses, setLicenses] = useState([]) const [sources, setSources] = useState([]) const [activeSection, setActiveSection] = useState('methodology') const [loading, setLoading] = useState(true) useEffect(() => { async function load() { try { const [licRes, srcRes] = await Promise.all([ fetch('/api/sdk/v1/canonical?endpoint=licenses'), fetch('/api/sdk/v1/canonical?endpoint=sources'), ]) if (licRes.ok) setLicenses(await licRes.json()) if (srcRes.ok) setSources(await srcRes.json()) } catch { // silently continue — static content still shown } finally { setLoading(false) } } load() }, []) const currentSection = PROVENANCE_SECTIONS.find(s => s.id === activeSection) return (

Control Provenance Wiki

Dokumentation der unabhaengigen Herkunft aller Security Controls — rechtssicherer Nachweis

Zur Control Library
{/* Left: Navigation */}

Dokumentation

{PROVENANCE_SECTIONS.map(section => ( ))}

Live-Daten

{['license-matrix', 'source-registry'].map(id => ( ))}
{/* Right: Content */}
{currentSection && (

{currentSection.title}

)} {activeSection === 'license-matrix' && } {activeSection === 'source-registry' && }
) }