'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
{config.privacyNotes.map((note, i) => (
-
{note}
))}
)}
{/* 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
| Komponente |
Technologie |
Version |
Beschreibung |
{config.technicalDetails.map((detail, i) => (
| {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 */}
)}
)
}