import { useEffect, useState, type ReactElement } from 'react'; import { Navigate, useLocation } from 'react-router-dom'; import { useAuthStore } from '@/stores'; import { LoadingSpinner } from '@/components/ui/LoadingSpinner'; export function ProtectedRoute({ children }: { children: ReactElement }) { const location = useLocation(); const isAuthenticated = useAuthStore((state) => state.isAuthenticated); const managementKey = useAuthStore((state) => state.managementKey); const apiBase = useAuthStore((state) => state.apiBase); const checkAuth = useAuthStore((state) => state.checkAuth); const [checking, setChecking] = useState(false); useEffect(() => { const tryRestore = async () => { if (!isAuthenticated && managementKey && apiBase) { setChecking(true); try { await checkAuth(); } finally { setChecking(false); } } }; tryRestore(); }, [apiBase, isAuthenticated, managementKey, checkAuth]); if (checking) { return (