import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { useAuth } from '../context/AuthContext' import Topbar from '../components/Topbar' import { getDashboardSummary, type DashboardEntry } from '../api' const groupLabel = (g: 'alt' | 'neu') => g === 'alt' ? 'Alt (vor DB-Refactor)' : 'Neu (DB-basiert)' function StatusPill({ status, count, onClick }: { status: string | null; count: number; onClick?: () => void }) { const label = status ?? '—' return ( ) } export default function ContentManage() { const navigate = useNavigate() const { token } = useAuth() const [entries, setEntries] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { if (!token) return setLoading(true) setError(null) getDashboardSummary(token) .then(setEntries) .catch((e: Error) => setError(e.message)) .finally(() => setLoading(false)) }, [token]) const groups: ('neu' | 'alt')[] = ['neu', 'alt'] return (

Content verwalten

Übersicht aller Collections nach Status. Klick auf eine Karte oder einen Status zum Drill-Down.

{loading &&
Wird geladen…
} {error &&
{error}
} {!loading && !error && groups.map(group => { const items = entries.filter(e => e.group === group) if (items.length === 0) return null return (

{groupLabel(group)}

{items.map(entry => (
{entry.error &&
{entry.error}
} {entry.has_status && entry.by_status.length > 0 && (
{entry.by_status.map(g => ( navigate(`/content/${entry.name}?status=${encodeURIComponent(g.status || '')}`)} /> ))}
)} {!entry.has_status && !entry.error && (
Kein Status-Feld
)}
))}
) })}
) }