import { useEffect, useState } from 'react'; import { Outlet } from 'react-router-dom'; import { BottomNav, Sidebar } from './BottomNav'; import { ToastContainer } from './Toast'; import { useUserStore } from '../../stores/userStore'; function UserGate({ children }: { children: React.ReactNode }) { const { users, activeUser, setActiveUser, fetchUsers, createUser } = useUserStore(); const [newName, setNewName] = useState(''); const [loading, setLoading] = useState(false); const [fetched, setFetched] = useState(false); useEffect(() => { fetchUsers().then(() => setFetched(true)); }, [fetchUsers]); if (!fetched) { return (
Laden…
); } if (!activeUser) { async function handleCreate(e: React.FormEvent) { e.preventDefault(); const name = newName.trim(); if (!name) return; setLoading(true); const user = await createUser(name); setLoading(false); if (user) setActiveUser(user); } return (

Krafttrainer

Wer trainiert heute?

{users.length > 0 && ( )}

{users.length === 0 ? 'Ersten Nutzer anlegen:' : 'Oder neuen Nutzer anlegen:'}

setNewName(e.target.value)} placeholder="Name" maxLength={50} autoFocus className="flex-1 bg-gray-900 border border-gray-700 rounded-lg px-3 py-2 text-gray-100 placeholder-gray-500 focus:outline-none focus:border-blue-500 min-h-[44px]" />
); } return <>{children}; } export function PageShell() { return (
); }