'use client'; import { useEffect, useState } from 'react'; import type { ArbeitszeitEintrag } from '@/types/arbeitszeit'; import ArbeitszeitForm from '@/components/ArbeitszeitForm'; import ArbeitszeitList from '@/components/ArbeitszeitList'; import Einstellungen from '@/components/Einstellungen'; import packageJson from '@/package.json'; interface Props { username: string; } type Tab = 'eingabe' | 'liste' | 'einstellungen'; export default function MainClient({ username }: Props) { const [activeTab, setActiveTab] = useState('eingabe'); const [refreshKey, setRefreshKey] = useState(0); const [editEntry, setEditEntry] = useState(null); const [pause, setPause] = useState(0.5); const version = packageJson.version; const buildDate = process.env.NEXT_PUBLIC_BUILD_DATE || new Date().toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' }); useEffect(() => { fetch('/api/settings') .then((r) => (r.ok ? r.json() : null)) .then((data) => { if (data && typeof data.pause === 'number') setPause(data.pause); }) .catch(() => {}); }, []); function handleSaved() { setRefreshKey((k) => k + 1); setEditEntry(null); } function handleEdit(entry: ArbeitszeitEintrag) { setEditEntry(entry); setActiveTab('eingabe'); window.scrollTo({ top: 0, behavior: 'smooth' }); } async function handleLogout() { await fetch('/api/logout', { method: 'POST' }); window.location.href = '/login'; } const tabs: { id: Tab; label: string }[] = [ { id: 'eingabe', label: 'Eingabe' }, { id: 'liste', label: 'Liste' }, { id: 'einstellungen', label: 'Einstellungen' }, ]; return (
{/* Header */}

Arbeitszeiterfassung  — {username}

{/* Tabs */}
{tabs.map((tab) => ( ))}
{/* Eingabe-Tab */} {activeTab === 'eingabe' && ( <> {editEntry && (
Eintrag bearbeiten (ID {editEntry.id})
)} setEditEntry(null)} /> {/* Letzte 10 Einträge unter der Eingabemaske */}

Letzte Einträge

)} {/* Liste-Tab */} {activeTab === 'liste' && (
)} {/* Einstellungen-Tab */} {activeTab === 'einstellungen' && (

Einstellungen

)}
); }