'use client' /** * SystemInfoSection Component * * Reusable component for displaying system documentation, architecture, * features, and optimization roadmap in admin pages. * * Configurations are now in ./system-info-configs/ */ import { useState } from 'react' // Types are now exported from configs export type { Feature, RoadmapPhase, TechDetail, AuditInfo, SystemInfoConfig, } from './system-info-configs/types' // Import types for local use import type { Feature, RoadmapPhase, SystemInfoConfig } from './system-info-configs/types' // Re-export configs for backwards compatibility export { SYSTEM_INFO_CONFIGS } from './system-info-configs' interface SystemInfoSectionProps { config: SystemInfoConfig } export default function SystemInfoSection({ config }: SystemInfoSectionProps) { const [activeTab, setActiveTab] = useState<'overview' | 'architecture' | 'roadmap' | 'technical' | 'audit' | 'documentation'>('overview') const [showFullDocs, setShowFullDocs] = useState(false) const tabs = [ { id: 'overview' as const, label: 'Uebersicht' }, { id: 'architecture' as const, label: 'Architektur' }, { id: 'roadmap' as const, label: 'Roadmap' }, { id: 'technical' as const, label: 'Technisch' }, ...(config.auditInfo ? [{ id: 'audit' as const, label: 'Audit' }] : []), ...(config.fullDocumentation ? [{ id: 'documentation' as const, label: 'Dokumentation' }] : []), ] const getStatusBadge = (status: Feature['status']) => { const styles = { active: 'bg-green-100 text-green-800', planned: 'bg-amber-100 text-amber-800', disabled: 'bg-slate-100 text-slate-600', } const labels = { active: 'Aktiv', planned: 'Geplant', disabled: 'Deaktiviert', } return ( {labels[status]} ) } const getPriorityBadge = (priority: RoadmapPhase['priority']) => { const styles = { high: 'bg-red-100 text-red-800', medium: 'bg-amber-100 text-amber-800', low: 'bg-blue-100 text-blue-800', } return ( {priority} ) } return (
{/* Header */}

{config.title}

{config.description}

{config.version && ( Version {config.version} )}
{/* Privacy Notes */} {config.privacyNotes && config.privacyNotes.length > 0 && (

Datenschutz-Hinweise

)} {/* Tab Navigation */}
{/* Tab Content */}
{/* Overview Tab */} {activeTab === 'overview' && (

Features

{config.features.map((feature, i) => (
{feature.name} {getStatusBadge(feature.status)}

{feature.description}

))}
)} {/* Architecture Tab */} {activeTab === 'architecture' && (

System-Architektur

{config.architecture.layers.map((layer, i) => (
{layer.title}
{layer.components.map((comp, j) => ( {comp} ))}
{i < config.architecture.layers.length - 1 && (
)}
))}
)} {/* Roadmap Tab */} {activeTab === 'roadmap' && (

Optimierungs-Roadmap

{config.roadmap.map((phase, i) => (
{phase.phase} {getPriorityBadge(phase.priority)}
    {phase.items.map((item, j) => (
  • {item}
  • ))}
))}
)} {/* Technical Tab */} {activeTab === 'technical' && (

Technische Details

{config.technicalDetails.map((detail, i) => ( ))}
Komponente Technologie Version Beschreibung
{detail.component} {detail.technology} {detail.version || '-'} {detail.description || '-'}
)} {/* Audit Tab */} {activeTab === 'audit' && config.auditInfo && (

Audit-relevante Informationen

{config.auditInfo.map((section, i) => (

{section.category}

{section.items.map((item, j) => (
{item.label} {item.value}
))}
))}
)} {/* Documentation Tab */} {activeTab === 'documentation' && config.fullDocumentation && (

Vollstaendige Dokumentation

{/* Export Button */}
)}
) }