'use client' import { useState, useEffect, useCallback } from 'react' import type { Roadmap } from './_types' import { statusLabels } from './_constants' import { api } from './_api' import { RoadmapCard } from './_components/RoadmapCard' import { CreateRoadmapModal } from './_components/CreateRoadmapModal' import { ImportWizard } from './_components/ImportWizard' import { RoadmapDetailView } from './_components/RoadmapDetailView' export default function RoadmapPage() { const [roadmaps, setRoadmaps] = useState([]) const [loading, setLoading] = useState(true) const [showCreate, setShowCreate] = useState(false) const [showImport, setShowImport] = useState(false) const [selectedRoadmap, setSelectedRoadmap] = useState(null) const [filter, setFilter] = useState('all') const loadRoadmaps = useCallback(async () => { setLoading(true) try { const data = await api('') const list = Array.isArray(data) ? data : (data.roadmaps || []) setRoadmaps(list) } catch (err) { console.error('Load roadmaps error:', err) } finally { setLoading(false) } }, []) useEffect(() => { loadRoadmaps() }, [loadRoadmaps]) const handleDelete = async (id: string) => { if (!confirm('Roadmap wirklich loeschen?')) return try { await api(`/${id}`, { method: 'DELETE' }) setRoadmaps(prev => prev.filter(r => r.id !== id)) } catch (err) { console.error('Delete error:', err) } } const filteredRoadmaps = filter === 'all' ? roadmaps : roadmaps.filter(r => r.status === filter) if (selectedRoadmap) { return (
{ setSelectedRoadmap(null); loadRoadmaps() }} onRefresh={() => { loadRoadmaps().then(() => { const updated = roadmaps.find(r => r.id === selectedRoadmap.id) if (updated) setSelectedRoadmap(updated) }) }} />
) } return (

Compliance Roadmaps

Umsetzungsplaene fuer Compliance-Massnahmen

{[ { label: 'Gesamt', value: roadmaps.length, color: 'text-gray-900' }, { label: 'Aktiv', value: roadmaps.filter(r => r.status === 'active').length, color: 'text-green-600' }, { label: 'Entwurf', value: roadmaps.filter(r => r.status === 'draft').length, color: 'text-gray-600' }, { label: 'Abgeschlossen', value: roadmaps.filter(r => r.status === 'completed').length, color: 'text-purple-600' }, ].map(stat => (
{stat.value}
{stat.label}
))}
{['all', 'draft', 'active', 'completed'].map(f => ( ))}
{loading ? (
Roadmaps werden geladen...
) : filteredRoadmaps.length === 0 ? (

Keine Roadmaps gefunden

) : (
{filteredRoadmaps.map(r => ( ))}
)} {showCreate && ( setShowCreate(false)} onCreated={() => { setShowCreate(false); loadRoadmaps() }} /> )} {showImport && ( setShowImport(false)} onImported={() => { setShowImport(false); loadRoadmaps() }} /> )}
) }