'use client' import { MaturityLevel, MATURITY_INFO, getScoreColor, getScoreRingColor } from '@/lib/sdk/gci/types' export type TabId = 'overview' | 'breakdown' | 'nis2' | 'iso' | 'matrix' | 'audit' export interface Tab { id: TabId label: string } export const TABS: Tab[] = [ { id: 'overview', label: 'Uebersicht' }, { id: 'breakdown', label: 'Breakdown' }, { id: 'nis2', label: 'NIS2' }, { id: 'iso', label: 'ISO 27001' }, { id: 'matrix', label: 'Matrix' }, { id: 'audit', label: 'Audit Trail' }, ] export function TabNavigation({ tabs, activeTab, onTabChange }: { tabs: Tab[]; activeTab: TabId; onTabChange: (tab: TabId) => void }) { return (
) } export function ScoreCircle({ score, size = 144, label }: { score: number; size?: number; label?: string }) { const radius = (size / 2) - 12 const circumference = 2 * Math.PI * radius const strokeDashoffset = circumference - (score / 100) * circumference return (
{score.toFixed(1)} {label && {label}}
) } export function MaturityBadge({ level }: { level: MaturityLevel }) { const info = MATURITY_INFO[level] || MATURITY_INFO.HIGH_RISK return ( {info.label} ) } export function AreaScoreBar({ name, score, weight }: { name: string; score: number; weight: number }) { return (
{name} {score.toFixed(1)}%
Gewichtung: {(weight * 100).toFixed(0)}%
) } export function LoadingSpinner() { return (
) } export function ErrorMessage({ message, onRetry }: { message: string; onRetry?: () => void }) { return (

{message}

{onRetry && ( )}
) }