import { useState, useEffect } from 'react' import { adminApi, type AdminUser } from '../api/client' import PageHeader from '../components/PageHeader' import Tabs from '../components/Tabs' type Tab = 'users' | 'groups' | 'theming' | 'audit' import UsersTab from './admin/UsersTab' import GroupsTab from './admin/GroupsTab' import ThemingTab from './admin/ThemingTab' import AuditTab from './admin/AuditTab' export default function AdminPage() { const [tab, setTab] = useState('users') const [allUsers, setAllUsers] = useState([]) useEffect(() => { adminApi.listUsers().then(data => setAllUsers(data ?? [])).catch(() => {}) }, []) const tabs: { id: Tab; label: string }[] = [ { id: 'users', label: 'Users' }, { id: 'groups', label: 'Groups' }, { id: 'theming', label: 'Theming' }, // „Activity" statt „Audit log": Der Reiter zeigt nicht mehr nur das // Protokoll, sondern davor auch den Stand der Texterkennung und die // Speicherbereinigung – alles, was im Hintergrund läuft. Die Kennung // bleibt 'audit', sie steht in keiner Adresse und muss nicht wandern. { id: 'audit', label: 'Activity' }, ] return (
} title="Admin panel" meta="Users, groups, appearance and activity" />
{tab === 'users' && } {tab === 'groups' && } {tab === 'theming' && } {tab === 'audit' && }
) }